2012-09-10 67 views

回答

5

確保你沒有一個分號後的for循環,否則編譯器將採取分號是在下面的括號中的循環和任何月底將執行一次。

for(i=0; 0; i); // end of loop 

{ 
    // do something once 
} 

你不必在你的例子分號,但我看到人們在編程的課程經常這樣做,它運行一次的事實是這個錯誤的症狀。只是一個建議。

+0

好處是,這個常見的錯字錯誤會表現爲循環執行一次。 –

+0

實際上,這是因爲OP在[此評論]中確認的(http://stackoverflow.com/questions/12356326/fori--00i-in-c-executes-exactly-one-time-why/18014145#comment16592658_12356393) 。 –

0

嘗試

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

然後查找for循環在谷歌。 有三個部分的for循環

初始化;循環結束條件;增量。

爲什麼你的代碼說,可能不是你的意思。

5

實際上,該行不會執行該語句。我想看看你的程序再看看其他一些輸出/語句塊中的

跑收益率時,沒有輸出被誤認爲該語句的輸出。

另一種可能是你的源代碼現在出不同步與您的二進制文件,發生的事情偶爾會手卷​​Ç構建系統。嘗試移除您的.o目標文件,您生成的二進制文件,並從頭開始重新編譯。如果執行消失,也許你需要看看如何更仔細地實現你的構建。

0

,因爲終止條件爲0即假

for(i=0; 0; i) 
{ 
    printf("%d",&i) 
} 

不打印任何東西這個循環將不執行甚至一次。

+3

好吧,夥計..非常非常抱歉..實際上在循環結束後有分號 – KapilGarg

+0

:)下一次請小心。 – Champ

1

這是從大約C99標準for循環報價:

6.8.5.3 The for statement 1 The statement 

爲(第-1;表達-2;表達-3)

語句的行爲如下:表達式expression-2是 控制在每次執行 循環體之前評估的表達式。在每次執行循環體之後,表達式-3被評估爲空白 表達式。如果條款-1是 聲明,它聲明的任何變量的範圍,其餘的聲明和整個循環,包括另外兩個 表達式 ;在控制表達式的第一個 評估之前按執行順序達到。如果條款-1是 表達,它是作爲一個空隙表達第一 評價控制expression.134的)

由於條件爲假,它不應該執行它甚至一次之前評估。所以這顯然是你使用的編譯器中的一個錯誤。

+0

在確認編譯器存在錯誤之前,我們應該看到真實的代碼。 –

+0

@dystroy我假設OP編譯了與沒有附加功能的相同的代碼。這是turbo C編譯器中的一個已知問題,我懷疑這是OP使用的問題。 –

-1

朋友自己沒有得到任何錯誤的程序。所以,請讓我知道答案的理由。 (); 程序: main() { ((0;) printf(「Hello」); } o/p:你好 上面的程序在turbo c-3中沒有給出任何錯誤。

+0

請重新檢查並格式化您的答案。 – fegemo

相關問題