Здесь, в этом коде, я использую unsigned int и хочу завершить мой цикл, как только он достигнет «0». Но это никогда не происходит, проходит '0'Почему этот цикл становится бесконечным циклом в C?
#include <stdio.h>
typedef unsigned int uint32_t ;
delay (uint32_t x){
uint32_t y = 0;
for(y=x; y>= 0; y--){
printf("Display number %d\n", y);
}
}
int main()
{
uint32_t times = 10;
printf("Hello World!\n");
delay(10);
return 0;
}
Выход:
Hello World!
Display number 10
Display number 9
Display number 8
Display number 7
Display number 6
Display number 5
Display number 4
Display number 3
Display number 2
Display number 1
Display number 0
Display number -1
Display number -2
Display number -3
Display number -4
Display number -5
Display number -6
Link: For code from: code.hackerearth.com
Это будет продолжаться до тех пор, пока 'y' становится отрицательным. 'y' не имеет знака, поэтому он не может стать отрицательным –
' y' is un * unsigned * integer ('uint32_t'), поэтому он всегда *'> = 0'. Итак 'uint32_t y = 0; для (y = x; y> = 0; y -) '- бесконечный цикл. – lurker