[問題] 前繼++ 和後繼++

作者: 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