看板 C_and_CPP 關於我們 聯絡資訊
請問一下下列問題 原始碼是 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 這個我一直想不通 請教高手 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.178.182 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1418641525.A.D5A.html
osnq: 啊不是印完換行後又執行一次+123 12/15 19:14
iloveyouever: 因為p先取出 算好+123 POINTER才會在前進 12/15 19:24
Push5F: 別練這無聊考題,為了考試而學? 看到新人寫這code我會退 12/15 21:13
Push5F: 可讀性太差=_= 12/15 21:13
suhorng: 純推五樓 12/15 21:20
chienweichih: 樓上為什麼要推自己 12/15 22:49
longlongint: push 5 f 12/16 00:31
osnq: 我想這種題目只會出現在筆試吧 12/16 06:21
testPtt: 這連軟體公司面試都會考 12/16 08:06
cjcat2266: 看情況,像微軟就不會出這種題目 12/16 08:57
Push5F: 這種題目我只有面試和碩看過...為了考試而考的=_= 12/16 20:48
tubbysong: *(p+1)+=123 或 *(p)=+1+123的差別 12/23 02:28