2016-03-26 127 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)。