[英]Code doesn't get excuted after using continue in while loop
我使用一個編譯器編寫了以下代碼,該編譯器被配置為適合使用eclipse的c89標准。
#include <stdio.h>
int main(void) {
int i=0;
printf("initial value for variable i is: %d\n",i);
while (i<3)
{
if (i==1) {continue;}
printf("%d\n",i);
i++;
}
return 0;
}
問題在於代碼不會被執行(根本沒有錯誤),並且控制台中沒有任何顯示。 當刪除以下代碼行時, if (i==1) {continue;}
一切正常。
當i
為1
,它的值不會改變,因此在下一次迭代和下一次迭代時仍為1
,並且...從1
改變要花很長時間。
for
循環的一個優點是它將循環控件捆綁在一行中。 您不會看到for (i = 0; i < 3; i++)
作為循環的問題; continue
將跳轉到循環控件中的i++
。
您說您正在使用Eclipse作為您的IDE。 這可能就是為什么根本沒有輸出的原因。 它的“終端”在程序中顯示為非終端,因此I / O被完全緩沖(而不是像終端輸出那樣通常被行緩沖)。 反過來,這意味着在緩沖區填滿,調用fflush(stdout)
或程序停止之前,不會出現任何輸出。 這是Eclipse的一個已知問題。 您可以調用setvbuf()
:添加一行setvbuf(stdout, NULL, _IOLBUF, BUFSIZ);
首先確保行緩沖有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.