2017-10-05 56 views
-1

此處已回答類似問題[https://stackoverflow.com/a/13421435/3276830]。作者說空循環中的更新語句

下面的代碼

for (i=0;i<5;i++); 
{ 
    printf("hello\n"); 
} 

解釋如下:

  • 重複五次for (i=0;i<5;i++)
  • ...什麼也不做(分號)
  • 打開局部變量{一個新的範圍
  • ...打印 「你好」
  • 關閉範圍}

然而,對於循環

int i = 0; 
for(;i++;cout<<i<<" "); 
cout<<i<<" "; 

輸出以下我得到的只是1,但我預計它是123456.....

編輯,我知道前綴和後綴操作之間的區別。但是,我確實錯過了第一次循環運行時爲0。

+0

你繼續的條件是'我++'並迅速計算結果爲0,這是falsey –

+0

啊, 我錯過了!謝謝@NickA –

+0

[前綴和後綴運算符有什麼區別?](https://stackoverflow.com/questions/7031326/what-is-the-difference-between-prefix-and-postfix-operators) –

回答

3
int i = 0; 
for(;i++;cout<<i<<" "); 

這個循環永遠無法執行,因爲i0,所以i++(遞增前值)的計算結果爲0這是。改爲嘗試++i

+0

謝謝,我暗示它錯了。謝謝。 –

1

for(;;i++, cout<<i<<" ");

看起來更美觀 :)正確的,將工作無論前綴或後綴