首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何引起故意除法为零?

如何引起故意除法为零?
EN

Stack Overflow用户
提问于 2010-10-05 20:38:13
回答 4查看 1.8K关注 0票数 11

出于测试的原因,我想在我的C++代码中导致一个除数为零。我写了这段代码:

代码语言:javascript
复制
int x = 9;
cout << "int x=" << x;
int y = 10/(x-9);
y += 10;

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-05 22:15:24

将变量设为volatile。对易失性变量的读取和写入被认为是可观察的:

代码语言:javascript
复制
volatile x = 1;
volatile y = 0;
volatile z = x / y;
票数 17
EN

Stack Overflow用户

发布于 2010-10-05 20:40:37

因为y没有被使用,所以它被优化了。

尝试在末尾添加一个cout << y

或者,您可以关闭优化:

代码语言:javascript
复制
gcc -O0 file.cpp
票数 14
EN

Stack Overflow用户

发布于 2010-10-05 22:37:16

被零除是一种未定义的行为。Not crashing也是未定义行为领域中潜在无限数量的可能行为的一个适当子集。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3863656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档