程序段:i=8,j=10;printf("%d,%d,%d,%d\n",i,j,++i,j++);其結果9,10,9,10.
結果為什么是這樣?
5 回答

monarchloser
TA貢獻1條經驗 獲得超5個贊
一直以來,++ --語法浪費了太多人的時間。說句實在話,++ -- 在C語言中其實是一個很細節的語法,除了表達簡練外,真的沒有什么其它的好處了。
由于中國的C語言教程長期以來被譚浩強主宰,而譚又錯誤的把++ --作為一個C語言重點來教,并增加了一些難點,把本來很簡單的語法,搞得復雜無比!
簡單的來說,++i 和 i++,在單獨使用時,就是 i=i+1。
而 a = ++i,相當于 i=i+1; a = i;
而 a = i++,相當于 a = i; i=i+1;
如果實在搞不明白++ --怎么回事,那也不是什么天塌下來的事。
因為a=++i完全可以寫成 i++; a=i。
a=i++完全可以寫成 a=i; i++。
而且,這也是一種好的程序風格:++ -- 語句如非特殊需要,請單獨一行使用。

Xyino_Snake
TA貢獻31條經驗 獲得超22個贊
++--的問題可以深入思考。但我已經知道,你現在問的這個問題,答案本身沒有答案揭示的結論更重要。我有C語言三劍客。里面有部分針對這一問題做了全面的闡述。大概的意思就是可以思考這個問題,但不能依靠這種特性。因為這種特性經??坎蛔?。因此,不妨分離出++--,對性能的影響幾乎為0。因為編譯器有權優化改寫你的代碼。

荒小北158
TA貢獻3條經驗 獲得超0個贊
++i ? 和 ?i++ ? ?雖然都是自增1 ? ?但是運算順序是有區別的 ? ++i ? 先運算后跳到下一個語句 ? i++則相反 ? ?(這樣描述可能不是特別的準確) ?
- 5 回答
- 1 關注
- 2375 瀏覽
添加回答
舉報
0/150
提交
取消