int i;
i=0;
for (i=0;i>2;i++)
{
repeat((3),"|",var);
printf("\n");
}
由於某些原因,它得到「for」並跳過它。我試圖把int i
放在for之外,甚至在for之外初始化它,並且在調試時它是零。我所需要做的就是循環兩遍這段代碼。這個循環在C中有什麼問題?
int i;
i=0;
for (i=0;i>2;i++)
{
repeat((3),"|",var);
printf("\n");
}
由於某些原因,它得到「for」並跳過它。我試圖把int i
放在for之外,甚至在for之外初始化它,並且在調試時它是零。我所需要做的就是循環兩遍這段代碼。這個循環在C中有什麼問題?
變化:
for (i=0;i>2;i++)
到:
for (i=0;i<2;i++)
您正在測試它是否> 2
這將失敗,因此它永遠不會進入循環。
謝謝,我確實在==和那不工作,所以我改變了>,仍然沒有區別 – StephanM 2012-02-15 21:39:15
for (i=0;i>2;i++)
你想
for (i=0;i<2;i++)
否則你for
循環體將永遠不會被執行。
這是因爲你的循環狀態:i > 2
變量i
它不大於2,所以條件i > 2
將評估爲0(FALSE)
希望它可以幫助
所以讓我們分解一個for循環。有三個部分爲(piece1; piece2; piece3)
piece1變量=設置,這將一旦在循環的第一個運行的發生
piece2 =當條件爲真,繼續循環
peice3 =在每次迭代結束時執行此操作。
所以你的循環現在說第一個設置i = 0,而我大於2(你剛剛說它不是)...在這一點上你的編譯器已經跳過了,因爲條件永遠不會是真實的。
由於這個原因,測試==也不會工作,因爲這會使得它循環,而我等於2,這將永遠不會是真的,因爲唯一你正在更新的地方是在循環內。中間狀態不是休息狀態,而是延續狀態。
您可以設置'I = 0',你可以有循環繼續運行,而'I> 2',但你不能做到這一點,並期望循環塊被處理。 – 2012-02-15 21:54:46