如何使故意划分为零?

Fir*_*his 11 c++ divide-by-zero

出于测试原因,我想在我的C++代码中将除以零.我写了这段代码:

int x = 9;
cout << "int x=" << x;
int y = 10/(x-9);
y += 10;
Run Code Online (Sandbox Code Playgroud)

我看到屏幕上印有"int = 9",但应用程序没有崩溃.是因为一些编译器优化(我用gcc编译)?可能是什么原因?

GMa*_*ckG 17

制作变量volatile.对volatile变量的读写操作被认为是可观察的:

volatile x = 1;
volatile y = 0;
volatile z = x / y;
Run Code Online (Sandbox Code Playgroud)


Nul*_*ion 14

因为y没有被使用,它正在被优化掉.
尝试cout << y在最后添加一个.

或者,您可以关闭优化:

gcc -O0 file.cpp
Run Code Online (Sandbox Code Playgroud)

  • 或者,关闭优化:) (2认同)