c - 为什么在 C 中永远递减一个 unsigned int 循环?

标签 c loops for-loop

下面的代码在无限循环中运行。 'i' 已用值 1 初始化,然后与 0 进行比较。

所以 printf() stmt 应该执行一次,但它会无限运行。

unsigned int i = 1;
for (; i >= 0; i--) {
    printf("Hello: %u\n",i);
}

请解释此行为。

最佳答案

因为 iunsigned 它不能为负,所以 i>=0 总是 true。

i 为零并且您执行 i-- 时,i 的值回绕到最大值 unsigned int 可以具有的值(大于零)。

您应该通过删除 unsigned 修饰符来使用有符号整数。

关于c - 为什么在 C 中永远递减一个 unsigned int 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7056442/

相关文章:

java - 为什么我的方法给我空值?

c++ - bool 表达式的等价性

c - 如何自动将类型转换添加到 c 源代码中的 printf 样式函数?

python - 有关创建词典的词典的更多信息

javascript - 需要循环帮助来使用 Javascript 构建表

c++如何在内部循环中使用带自动的 vector 删除对象

node.js - SyntaxError : Unexpected reserved word "await", node.js 是正确的版本

javascript - ngFor 循环继续执行并使用 firebase 数据库在 ionic 3 中使应用程序崩溃

c - 如何复制硬盘分区?

c - 尝试在 C 中使用 "strcpy"将 char 元素从一个数组复制到另一个数组时出现指针错误