2016-03-26 6 views
-1

warum diese Frage in Endlosschleife eintritt. Acc zu mir und sollte 65001,65002 .... 65535 sein. Plesae elaborate.Thanks im VorausWarum Ausgang kommt Endlosschleife

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

Verwenden Sie 'uint16_t' anstelle von' unsigned int'. BTW 'getch();': unerreichter Code – BLUEPIXY

+2

Er tritt in die Schleife ein, weil die Bedingung in der Schleife 'i ++! = 0' erfüllt ist ... 'int' ist nicht garantiert eine 16-Bit-Ganzzahl ohne Vorzeichen. In der Tat ist es die meisten 32-Bit-Computer heutzutage. Verwenden Sie stattdessen 'uint16_t' oder' unsigned short'. – Ian

Antwort

3

Auf modernen Systemen ein unsigned int mindestens 32 Bit, aber Sie erwarten 16 Bit. Sie haben keine Endlosschleife, aber sie wickelt sich erst um mindestens 2^32 (4294967296) herum.