这是C语言。这个代码是正确的,结果也是正确的。但我不理解为什么if会在循环4次后,才换行。我在单步运

这是C语言。这个代码是正确的,结果也是正确的。但我不理解为什么if会在循环4次后,才换行。我在单步运行后,发现代码中p-a[0]的是从1到4。但根据我的理解,a[0]是地址,p=a[0],那p也是地址,假设初始地址是2000,那p++应该是2004,2004-2000=4%4==0,那if函数应该在第二次循环就换行了,为什么会循环四次才换行。而且我把a的元素值改了,单步调试p会把数组的值拿来用,而p-a[0]还是从1到4。希望有大神能解答下。

你已经知道“假设初始地址是2000,那p++应该是2004”。

那么你也容易理解 执行一轮循环 p-a[0] 是1(数据单元差距)而不是4(地址数值差距)。所以是循环4轮才打印回车。