2015-09-28 66 views
-1

只是好奇,爲什麼下面的代碼不等於永遠循環?相反,應用程序崩潰。for循環中條件的表達式無效

unsigned short i; 
for (i = 1; i >= 0; i++) 
{ 
    printf("%d\n", i); 
} 
+1

不知道。我得到了一個無限循環,或者至少與我讓它運行的5秒鐘期間一樣多。你什麼時候遇到崩潰?有什麼錯誤信息? 'gdb'對此有何評論? – Amadan

+5

此代碼正確(並導致無限循環)。請發佈[MCVE](http://stackoverflow.com/help/mcve)。你的崩潰可能是由程序中的其他內容引起的。另一種可能性是您的終端無法處理輸出量,終端崩潰或似乎崩潰。 –

+0

很明顯,代碼會崩潰,因爲它會運行一個無限循環!你的問題是什麼? –

回答

1

問題解決了。反病毒Karspersky正在分析這個exe文件近20秒看起來。如果我禁用防病毒,它會立即運行。感謝您的所有輸入。

-3

unsigned short i;

爲(I = 1; I> = 0;我++){

printf("%d\n", i); 

}

此循環將當我的值變得大於短可以採取崩潰。

+2

我不認爲這是真的。當'i'達到'unsigned short'的最大可能值時,下一個增量將包圍它到0.請參閱http://stackoverflow.com/questions/988588/is-using- unsigned-integer-overflow-good-實踐。我相信這個行爲是由C標準定義的;如果編譯器導致此代碼崩潰,則編譯器將中斷。該錯誤可能是代碼中的其他地方。 –

0
unsigned short i; 
for (i = 1; i >= 0; i++) 
{ 
    printf("%d\n", i); 
    system("pause"); 
} 

也許它是如此之快,它打破,你可以用它使一個暫停,但你需要按輸入保持環路