for迴圈標準寫法: for(int i = 0 ; (i < 10); i++); 或者可以用建構式初始化起始值 for(int i(0) ; (i < 10) ; i++); for迴圈在編譯器解釋上是把;;前中後三個拆解成三個block來處理 所以可以寫: for(int i(0),t(0),k(0), (i<10); i++); 這樣for迴圈"內"就可以一次使用三個變數 所以當然也可以在最後一個尾巴的block加上額外的運算方法: for(int i(0),t(0),k(0), (i<10); t = i+1, k = t*2; i++); 理論上既然for迴圈內以逗號隔開應該是會被解析的, 那麼for(; 條件句1,條件句2,條件句3;); 應該這麼寫編譯器應該也是會過的 編譯一下,過了 來分析一下記憶體上是怎麼跑的 用Cheat Engine動態跟蹤一下很快就能找到存取點了(那個k值的地址) :P 跟蹤回去,可以找到int main()架構在這裡 看來Dev C++ 在組合語言上只保留了k == 99這個條件句了 (對於 i < 10這個條件句已經被無視了Otz) 為了避免是Dev C++對於for迴圈解析的問題 另外拿了Visual C++做了測試: 用Cheat Engine跟蹤一下int main()的結果: VC++的解析狀況也是選擇只保留最後一個條件句,把 i < 10條件句給遺忘了T__T 不信邪的再拿CBuilder測一下 用Cheat Engine跟蹤: C++Builder編譯後的結果也是選擇把條件句 i < 10做遺忘,只取最後一個 看起來各個版本的C++IDE做解析都會把 for (int i = 0 ; i < 10 , i < 9, i < 8; i++); 只解析最後一個條件句(意思是如這個for迴圈i只會跑0~7) 查了一下國外討論串 Are multiple conditions allowed in a for loop? 結論也是這樣Otz.