2012-02-15 83 views
1
int i; 
i=0; 
for (i=0;i>2;i++) 
    { 
    repeat((3),"|",var); 
    printf("\n");   
    } 

由於某些原因,它得到「for」並跳過它。我試圖把int i放在for之外,甚至在for之外初始化它,並且在調試時它是零。我所需要做的就是循環兩遍這段代碼。這個循環在C中有什麼問題?

+0

您可以設置'I = 0',你可以有循環繼續運行,而'I> 2',但你不能做到這一點,並期望循環塊被處理。 – 2012-02-15 21:54:46

回答

5

變化:

for (i=0;i>2;i++) 

到:

for (i=0;i<2;i++) 

您正在測試它是否> 2這將失敗,因此它永遠不會進入循環。

+0

謝謝,我確實在==和那不工作,所以我改變了>,仍然沒有區別 – StephanM 2012-02-15 21:39:15

1
for (i=0;i>2;i++) 

你想

for (i=0;i<2;i++) 

否則你for循環體將永遠不會被執行。

2

這是因爲你的循環狀態:i > 2

變量i它不大於2,所以條件i > 2將評估爲0(FALSE)

希望它可以幫助

1

所以讓我們分解一個for循環。有三個部分爲(piece1; piece2; piece3)

piece1變量=設置,這將一旦在循環的第一個運行的發生

piece2 =當條件爲真,繼續循環

peice3 =在每次迭代結束時執行此操作。

所以你的循環現在說第一個設置i = 0,而我大於2(你剛剛說它不是)...在這一點上你的編譯器已經跳過了,因爲條件永遠不會是真實的。

由於這個原因,測試==也不會工作,因爲這會使得它循環,而我等於2,這將永遠不會是真的,因爲唯一你正在更新的地方是在循環內。中間狀態不是休息狀態,而是延續狀態。

-1

更改您的for循環爲(i = 0;我< 2;我++)

+0

這真的增加了其他答案沒有提到的東西,你不覺得嗎? – Lundin 2015-07-03 14:07:44