亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于printf函數

關于printf函數

C
奕吉啊 2017-01-05 17:33:16
程序段:i=8,j=10;printf("%d,%d,%d,%d\n",i,j,++i,j++);其結果9,10,9,10. 結果為什么是這樣?
查看完整描述

5 回答

已采納
?
望遠

TA貢獻1017條經驗 獲得超1032個贊

printf函數是從左往右讀取,然后將先讀取放到棧底,最后讀取的放在棧頂,處理輸出的時候是從棧頂開始的,所以我們看見的結果是從右邊開始處理的。

查看完整回答
2 反對 回復 2017-01-06
?
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++。
而且,這也是一種好的程序風格:++ -- 語句如非特殊需要,請單獨一行使用。

查看完整回答
5 反對 回復 2017-01-05
  • 荒小北158
    荒小北158
    前輩厲害了!
  • 奕吉啊
    奕吉啊
    哦哦,謝謝,但是我還想知道這四個值輸出的順序,不然最后那個結果我還是弄不明白。
?
Xyino_Snake

TA貢獻31條經驗 獲得超22個贊

++--的問題可以深入思考。但我已經知道,你現在問的這個問題,答案本身沒有答案揭示的結論更重要。我有C語言三劍客。里面有部分針對這一問題做了全面的闡述。大概的意思就是可以思考這個問題,但不能依靠這種特性。因為這種特性經??坎蛔?。因此,不妨分離出++--,對性能的影響幾乎為0。因為編譯器有權優化改寫你的代碼。
查看完整回答
2 反對 回復 2017-01-07
?
奕吉啊

TA貢獻18條經驗 獲得超23個贊

個人認為,給出一段代碼而沒有一個確定的結果,是一個很可怕的事。

查看完整回答
1 反對 回復 2017-01-06
?
Vibratee

TA貢獻1條經驗 獲得超0個贊

i的值和++i的值不可能同時都是9呀..

查看完整回答
反對 回復 2017-01-05
?
DOUBLE_l

TA貢獻45條經驗 獲得超12個贊

結果是8,10,9,10
查看完整回答
反對 回復 2017-01-05
?
Cxiao

TA貢獻6條經驗 獲得超0個贊

i++ 先取值運算/操作,再自增1 ++i 先自增1,再對自增后的值進行操作
查看完整回答
反對 回復 2017-01-05
  • 奕吉啊
    奕吉啊
    我是想問結果為什么是那樣?
  • Cxiao
    Cxiao
    為什么感覺應該是8,10,9,10......
?
荒小北158

TA貢獻3條經驗 獲得超0個贊

++i ? 和 ?i++ ? ?雖然都是自增1 ? ?但是運算順序是有區別的 ? ++i ? 先運算后跳到下一個語句 ? i++則相反 ? ?(這樣描述可能不是特別的準確) ?

 


查看完整回答
反對 回復 2017-01-05
  • 奕吉啊
    奕吉啊
    我是想問結果為什么是那樣?
  • 荒小北158
    荒小北158
    對啊!就是因為它的一個小順序不同 所以才導致它的輸出啊 你可以用編譯器調試相關代碼 調試一下就知道了 我覺得我說得很明白了 自己去動手吧!
  • 5 回答
  • 1 關注
  • 2375 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號