下面的代码在无限循环中运行。 'i' 已用值 1 初始化,然后与 0 进行比较。
所以 printf() stmt 应该执行一次,但它会无限运行。
unsigned int i = 1;
for (; i >= 0; i--) {
printf("Hello: %u\n",i);
}
请解释此行为。
最佳答案
因为 i
是 unsigned
它不能为负,所以 i>=0
总是 true。
当 i
为零并且您执行 i--
时,i
的值回绕到最大值 unsigned int
可以具有的值(大于零)。
您应该通过删除 unsigned
修饰符来使用有符号整数。
关于c - 为什么在 C 中永远递减一个 unsigned int 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7056442/