c - 乘法结果为零

标签 c

下面的循环应该从 2 开始递归地乘以一个值。经过一些迭代后,该值似乎是 0,而不是不断增长的数字。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int i;
    for (i = 2; ; i = i * i) {
        printf("%d\n", i);
    }
}

有人可以解释一下为什么吗?有什么办法可以解决吗?

最佳答案

C 中的

普通int有符号for 中没有条件表达式来打破循环。这使得它无限,结果是 signed integer overflow最终调用 undefined behavior 。在这种情况下,你不能指望有什么好处。

关于c - 乘法结果为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36183880/

相关文章:

c - SIGSEGV 处理程序中的段错误

c - 验证 x-509 证书签名和有效性 c 代码

c - 使用来自多个文件的信号量 C-Windows

c - 如何避免在每个 "return "之前调用 free()

转换 .txt 文件的文本

命令行参数给出无效的初始化程序错误

C将文件读入二维数组

c - 二叉搜索树插入错误

c# - 获取已安装的软件列表

c++ - 逐像素复制 IPL 图像