[问题] 前继++ 和后继++

楼主: jack58 (有信心)   2014-12-15 19:05:14
请问一下下列问题
原始码是
int a[]={1,2,3,4,5,6,7,8,9,10};
int *p=a;
int i;
*(p++)+=123;
*(++p)+=123;
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n\n");
*(p++)+=123;
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
为什么执行的结果
在第二次print的第3个值是249
124 2 126 4 5 6 7 8 9 10
124 2 249 4 5 6 7 8 9 10
这个我一直想不通 请教高手
作者: osnq (又可以挂bbs了)   2014-12-15 19:14:00
啊不是印完换行后又执行一次+123
作者: iloveyouever (佚名)   2014-12-15 19:24:00
因为p先取出 算好+123 POINTER才会在前进
作者: Push5F (帐号已卖)   2014-12-15 21:13:00
别练这无聊考题,为了考试而学? 看到新人写这code我会退可读性太差=_=
作者: suhorng ( )   2014-12-15 21:20:00
纯推五楼
作者: chienweichih ((゚д゚))   2014-12-15 22:49:00
楼上为什么要推自己
作者: longlongint (华哥尔)   2014-12-16 00:31:00
push 5 f
作者: osnq (又可以挂bbs了)   2014-12-16 06:21:00
我想这种题目只会出现在笔试吧
作者: testPtt (测试)   2014-12-16 08:06:00
这连软件公司面试都会考
作者: cjcat2266 (CJ Cat)   2014-12-16 08:57:00
看情况,像微软就不会出这种题目
作者: Push5F (帐号已卖)   2014-12-16 20:48:00
这种题目我只有面试和硕看过...为了考试而考的=_=
作者: tubbysong (song)   2014-12-23 02:28:00
*(p+1)+=123 或 *(p)=+1+123的差别

Links booklink

Contact Us: admin [ a t ] ucptt.com