unsigned int i;
for (i = 100; i >=0; --i)
printf("%d\n", i);
I ran this code on ideone and it prints until -10000
unsigned int i;
for (i = 100; i >=0; --i)
printf("%d\n", i);
I ran this code on ideone and it prints until -10000
Since i
is unsigned, it will always be >=0
Using the format string %d
interprets it as a signed integer when printing. To view it unsigned, use %u
.
unsigned i
will always be >=0
, so int
should be used instead of unsigned int
in this case.
The problem is that i
becomes (or wants to become) negative, but since it's an unsigned int
, it stays positive and loops forever (-1 = 0xffffffff in 32-bit).