作者yongb (火系見習魔法師 )
看板C_and_CPP
標題[問題] for迴圈裏面 ++i的問題?
時間Sun May 20 07:41:32 2018
開發平台(Platform): (Ex: Win10, Linux, ...)
ubuntu14.04
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
gcc5.4
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
null
問題(Question):
我昨天刷題的時候
有一題我因為某個原因需要
for(int i=0;i<=5;++i)
結果發現
i是從0跑起?
正常來說不是應該要從1跑起嗎?
我的認知是++i這種東西在該行會直接生效
我嘗試了一下不用for,直接printf試試,結果跟我的認知是一樣的
我爬了置底文
for迴圈的先後順訊,莫非是第一輪不會++i?
但這個看法又不合理,如果我用i++,下一輪就會++,表示第一輪就有生效了?
半夜睡覺一直想這件事情都沒睡好,早上趕緊上ptt提問
還是各位大大不吝指教小弟
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
https://ideone.com/4eZvhh
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.204.38
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1526773297.A.6AF.html
※ 編輯: yongb (61.230.204.38), 05/20/2018 07:49:00
感謝神崎大大m(_ _)m
2F:推 b0920075: 先初始化再判斷條件,然後執行回圈內的事情,最後更新i 05/20 08:39
3F:→ b0920075: 再說一個statement是以分號為基準吧,跟一行沒關係 05/20 08:40
4F:推 stupid0319: 你把for一行分三行寫,就不會有這個問題了 05/20 08:45
5F:→ testPtt: 單純省空間 05/20 08:47
6F:推 ilikekotomi: 看神崎大大貼的explanation就知道了 05/20 10:49
8F:→ forever84721: 改成while寫你可能就懂了 05/21 00:03
9F:→ forever84721: for第三個是每次跑完 要做的事最後要i++ ++i不都一 05/21 00:08
10F:→ forever84721: 樣 +完再去第二的判斷式 成立再繼續 05/21 00:08
了解了,謝謝大大
11F:推 bhbbbbb: 你的for迴圈第一次就是跑i=0第二次1最後一次4,不懂你的 05/21 20:04
12F:→ bhbbbbb: 問題在哪,一直都是這樣吧 05/21 20:04
我原先的認知是
我後面寫++i
開始跑第一次迴圈前0就會變1了
但是看來我錯了QQ
我仔細想我會這樣認為的原因是可能以前看別人程式碼自以為有懂,
沒有自己試著去每一行都理解清楚、跑跑看
最後導致觀念有錯誤的連結......真的感謝各位大大幫忙解答m(_ _)m
※ 編輯: yongb (1.169.193.49), 05/21/2018 22:14:34