看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1526773297.A.6AF.html ※ 編輯: yongb (61.230.204.38), 05/20/2018 07:49:00
KanzakiHAria: http://en.cppreference.com/w/cpp/language/for 05/20 07:53
感謝神崎大大m(_ _)m
b0920075: 先初始化再判斷條件,然後執行回圈內的事情,最後更新i 05/20 08:39
b0920075: 再說一個statement是以分號為基準吧,跟一行沒關係 05/20 08:40
stupid0319: 你把for一行分三行寫,就不會有這個問題了 05/20 08:45
testPtt: 單純省空間 05/20 08:47
ilikekotomi: 看神崎大大貼的explanation就知道了 05/20 10:49
djshen: 你#1MNSjNfA不就用過i++了 05/20 11:45
forever84721: 改成while寫你可能就懂了 05/21 00:03
forever84721: for第三個是每次跑完 要做的事最後要i++ ++i不都一 05/21 00:08
forever84721: 樣 +完再去第二的判斷式 成立再繼續 05/21 00:08
了解了,謝謝大大
bhbbbbb: 你的for迴圈第一次就是跑i=0第二次1最後一次4,不懂你的 05/21 20:04
bhbbbbb: 問題在哪,一直都是這樣吧 05/21 20:04
我原先的認知是 我後面寫++i 開始跑第一次迴圈前0就會變1了 但是看來我錯了QQ 我仔細想我會這樣認為的原因是可能以前看別人程式碼自以為有懂, 沒有自己試著去每一行都理解清楚、跑跑看 最後導致觀念有錯誤的連結......真的感謝各位大大幫忙解答m(_ _)m ※ 編輯: yongb (1.169.193.49), 05/21/2018 22:14:34