给出以下示例代码:
#include <stdio.h>
int main()
{
int a = 10, c, d, e;
int *p = &a;
c = p + 1 - p;
d = (unsigned long)(p+1) - (unsigned long)p;
e = (p+1) - p;
printf("\n%d, %d, %d\n", c, d, e);
}
然后,此输出1, 4, 1
为什么我们看到算术结果不同?这是由于字节级别的解释差异引起的还是其他原因?