[問題] C語言的題目

看板C_and_CPP (C/C++)作者 (Be Patient.....)時間16年前 (2009/05/26 22:35), 編輯推噓8(807)
留言15則, 6人參與, 最新討論串1/1
我剛剛讀計算機概論 看到以下一題C語言的問題: int A[5]; int *P; int a,b,c,d,e,f; for(i=0;i<5;i++) { A[i] = 5-i; } P = A; a= *P; b= *P++; c= *++P; d= ++*P; e= (*P)++; f= *--P; 試問: a b c d e f 之值? 書的答案是給: a=5 b=5 c=3 d=4 e=4 f=4 我不懂的是:為何e=4? 難道說在C語言裡, X=3++ 與 X=++3 最後的結果都是X=4? 謝謝! -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.192.224.249

05/26 22:50, , 1F
a=*P;b=*P;++P;++P;c=*P;d=*P+1;e=*P+1;--P;f=*P; 請慢用
05/26 22:50, 1F

05/26 22:53, , 2F
話說*P++ 是指*(P++)還是(*P)++ ...=口=?
05/26 22:53, 2F

05/26 22:56, , 3F
回二樓 是*(P++)
05/26 22:56, 3F

05/26 22:58, , 4F
應該是說 tmp = P -> P++ -> b = *tmp
05/26 22:58, 4F

05/26 22:59, , 5F
a=*P;b=*P;++P;++P;c=*P;++*P;d=*P;e=*P;++*P;--P;f=*P;
05/26 22:59, 5F

05/26 22:59, , 6F
更正 tmp = P; P++; b = *tmp;
05/26 22:59, 6F

05/26 22:59, , 7F
剛剛打錯了
05/26 22:59, 7F

05/26 23:05, , 8F
感謝! 那請問X=3++ 與 X=++3 最後的結果都是X=4 正確嗎?
05/26 23:05, 8F

05/26 23:08, , 9F
不正確。前者是3 後者是4
05/26 23:08, 9F

05/26 23:11, , 10F
若樓上正確 那e應該=3吧?
05/26 23:11, 10F

05/26 23:13, , 11F
在d=++*P 那裡時*P就被設為4了。所以e變成 =4++;
05/26 23:13, 11F

05/26 23:14, , 12F
感謝!
05/26 23:14, 12F

05/27 11:24, , 13F
Y=++X 是X先+1再給Y , Y=X++ 是先給Y以後X再+1
05/27 11:24, 13F

05/27 11:24, , 14F
最後的X值都一樣有+1 但是Y不一樣
05/27 11:24, 14F

05/27 16:00, , 15F
我不懂d的行為= =..d=++*P 這裡的*P不是指向3嗎? 所以d=++3
05/27 16:00, 15F
文章代碼(AID): #1A6_uTK0 (C_and_CPP)
文章代碼(AID): #1A6_uTK0 (C_and_CPP)