2016-03-26 128 views
-1

爲什麼這個問題是無限循環輸入的。對我來說,應該是65001,65002 .... 65535。 Plesae elaborate.謝謝爲什麼輸出是無限循環

#include<> 
#include<stdio.h> 
#include<conio.h> 
int main() 
{ 
unsigned int i=65000; 
while (i++ != 0) 
printf("%d ",i); 
return 0; 
getch(); 
} 
+0

使用'uint16_t'而不是'unsigned int'。 BTW'getch();':未被存取的代碼 – BLUEPIXY

+2

它進入循環,因爲循環中的條件'i ++!= 0'被滿足......'int'不能保證是一個16位無符號整數。實際上,它是現今電腦中最多的32位。改爲使用'uint16_t'或'unsigned short'。 – Ian

回答

3

在現代系統上,一個無符號整數至少是32位,但你期待16位。你沒有一個無限循環,但它不會環繞,直到至少2^32(4294967296)。