出于测试的原因,我想在我的C++代码中导致一个除数为零。我写了这段代码:
int x = 9;
cout << "int x=" << x;
int y = 10/(x-9);
y += 10;我在屏幕上看到打印了"int =9“,但应用程序没有崩溃。是不是因为一些编译器的优化(我是跟gcc一起编译的)?可能的原因是什么?
发布于 2010-10-05 22:15:24
将变量设为volatile。对易失性变量的读取和写入被认为是可观察的:
volatile x = 1;
volatile y = 0;
volatile z = x / y;发布于 2010-10-05 20:40:37
因为y没有被使用,所以它被优化了。
尝试在末尾添加一个cout << y。
或者,您可以关闭优化:
gcc -O0 file.cpp发布于 2010-10-05 22:37:16
被零除是一种未定义的行为。Not crashing也是未定义行为领域中潜在无限数量的可能行为的一个适当子集。
https://stackoverflow.com/questions/3863656
复制相似问题