作者PanYX (Panpeter)
看板C_and_CPP
標題[問題] C語言簡單習題求解
時間Sat May 21 23:22:09 2016
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
問題(Question):
a++ 的意義是先執行整個敘述後再將a的值加一 (--是減一
++a 的定義先把a加一後,在執行整個敘述 (同上
那為甚麼第八行的執行結果會是9?
預期的正確結果(Expected Output):
a=9
a=9
請按任意鍵繼續....
程式碼(Code):(請善用置底文網頁, 記得排版)
1 /*hw5_1a,運算式練習(一)*/
2 #include<stdio.h>
3 #include<stdlib.h>
4 int main(void)
5 {
6 int a = 8;
7 printf("a=%d\n", ++a);
8 printf("a=%d\n", a--);
9
10 system("pause");
11 return 0;
12 }
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.14.67.39
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1463844132.A.83C.html
1F:→ longlongint: a++再看一次 05/21 23:26
2F:→ PanYX: 是把a--換成a++嗎? 剛剛試一下還是9 05/21 23:34
3F:推 TWkobe: 你再打一個printf("a=%d\n", a); 05/21 23:35
4F:→ TWkobe: 後綴--的副作用要到下一行你才看得到 05/21 23:36
5F:→ bibo9901: 我怎麼覺得你"定義"寫反了? 05/21 23:36
※ 編輯: PanYX (101.14.67.39), 05/21/2016 23:45:35
6F:推 bben900911: 做完再做+-,那當然+-後的結果該行看不到阿? 05/21 23:46
7F:→ bben900911: 你嘗試在7~8 8~95之間直接檢查a。再研究看看 05/21 23:47
8F:→ bben900911: 8~9* 05/21 23:47
9F:→ PanYX: t大是寫在哪一行呢? 謝b大 改正了 05/21 23:48
10F:→ PanYX: b大我試試 05/21 23:49
11F:推 TWkobe: 你在printf("a=%d\n", a--);後面加上去就知道為什麼了 05/21 23:49
12F:→ PanYX: 感恩各位解答 所以答案是a=9 a=8 這樣嗎? 05/21 23:57
13F:推 TWkobe: 你在第七行的時候印出9此時的a也是9 第八行時先印出9 05/22 00:01
14F:→ TWkobe: 印完9後副作用此時a才變成8 所以你在印一次a就會是8 05/22 00:02
15F:→ PanYX: 嗚嗚 這個題目怎麼有點在弄新手阿 哈哈 還是我太淺 05/22 00:03
16F:推 noodleT: operator 可以看作一個帶有返回值的函式,8,9兩行都會先 05/22 00:31
17F:→ noodleT: 執行 ++,只差在返回值不同 05/22 00:31
18F:→ noodleT: a++ 是先執行 a++ 喔,不是先做 printf ,只是 a++ 返回 05/22 00:34
19F:→ noodleT: 的是舊值而已 05/22 00:34
21F:推 art1: 回傳值 05/22 02:25
22F:→ MOONRAKER: 一點都沒有弄到好嗎 現在人怎麼那麼容易被弄 05/22 12:09
23F:→ MOONRAKER: 沒事就假設全世界人都要弄他 超棒DER 05/22 12:10
24F:→ MOONRAKER: 都知道自己是新手 跟自己想的不一樣就要學起來懂嗎 05/22 12:11
25F:→ MOONRAKER: 想不通就覺得別人[弄]你 那不要學阿 就不會被[弄]了啊 05/22 12:11
26F:→ Caesar08: 實際上就是你太淺而已... 05/22 12:28
27F:→ PanYX: moon大 開個小玩笑 別太認真 我也後面說我太淺啦 05/22 13:18
28F:→ bibo9901: 不知道當初設計 ++/-- 是不是為了對應asm的 INC/DEC ? 05/22 14:16
29F:→ PanYX: 我會吸取教訓 改進自己的!! 05/22 14:17
30F:→ bibo9901: 以今日的角度看是滿搞人的沒錯 05/22 14:17
31F:→ bibo9901: 至於那種跪在神像前批評別人不跪的 別理他沒關係 05/22 14:24
32F:→ Schottky: @bibo9901 可以說是對應,但 INC 可沒有先加後加的問題 05/22 14:43
33F:→ PanYX: b大 謝謝 了解了 05/22 14:47