我在学校的书中有这段代码.
#include<iostream>
using namespace std;
int main() {
int x=10,c=1;
while (c < 5) {
x += x*c;
c *= 2;
c++;
c -= 2;
cout << "X=" << x<<'\n';
}
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你可以看到它是一个无限循环,当逻辑跟踪时,它应该显示20,40,80等等.然而,在每个循环周期后添加系统("暂停")时它总是显示0.它显示正确的值,但是当如上所示(无限循环)时,它显示为零.任何想法的原因?
yiz*_*lez 11
c无论如何总是1.循环变得无限.最终,X变得0由于整数溢出.
c = 1
c *= 2; c = 2
c++; c = 3
c -= 2; c = 1 <-- infinite
Run Code Online (Sandbox Code Playgroud)