这段代码没有抛出异常或退出但无限运行,为什么?
This code didn't throw an exception or exit but runs infinitely why?
我正在尝试一个实验,我希望这段代码抛出异常或为 n 打印不明确的值并退出,但它最终会无限地 运行。为什么它会无限运行?
#include <stdio.h>
int main() {
int y=5;
int n=4;
while(y || n) {
printf("n = %d y = %d\n",n,y);
y--;
n--;
}
return 0;
}
沿着 y
或 n
的循环 运行 是 non-zero。
要终止循环,y
和 n
在循环顶部都必须为零,但这永远不会发生,因为 y
和 n
开始时彼此不相等,并且每次迭代中每个都下降一个。
另请注意,有符号整数 overflow/underflow 是 未定义的行为 ,因此如果您 运行 循环足够长以致于发生这种情况,则无法保证关于将会发生什么。
我正在尝试一个实验,我希望这段代码抛出异常或为 n 打印不明确的值并退出,但它最终会无限地 运行。为什么它会无限运行?
#include <stdio.h>
int main() {
int y=5;
int n=4;
while(y || n) {
printf("n = %d y = %d\n",n,y);
y--;
n--;
}
return 0;
}
沿着 y
或 n
的循环 运行 是 non-zero。
要终止循环,y
和 n
在循环顶部都必须为零,但这永远不会发生,因为 y
和 n
开始时彼此不相等,并且每次迭代中每个都下降一个。
另请注意,有符号整数 overflow/underflow 是 未定义的行为 ,因此如果您 运行 循环足够长以致于发生这种情况,则无法保证关于将会发生什么。