问题来自百度知道,源地址http://zhidao.baidu.com/question/299302392.html
程序代码如下
#include<stdio.h>
void main()
{
int *p,a[3]={0,1,2};
p=a;
printf("%d %d %d %d %d\n",p,a,*(p+1),p,a[1]);
printf("%d %d %d %d %d %d %d\n",&a[1],p,*++p,p,*p,p,a[1]);
}
原提问者的执行结果为
1245040 1245040 1 1245040 1
1245044 1245044 1 1245040 0 1245040 1
有回答说
按这样理解确实能解释通,但是我的执行结果为
2291576 2291576 1 2291576 1
2291580 2291580 1 2291580 1 2291580 1
第二个输出中p的指针变化跟它的不一样(即使忽略了左右顺序)
原帖中有这样的回复
如果按Answer2理解,我的结果就能解释通了,但是Answer1中++p并没有优先执行
难道++p的执行优先级也与机器有关?
求解释