下面的循环应该从 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/