首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未定义的行为依赖于c++中的编译器吗?

未定义的行为依赖于c++中的编译器吗?
EN

Stack Overflow用户
提问于 2012-05-10 15:01:55
回答 4查看 116关注 0票数 0

未定义的行为依赖于c++中的编译器吗?

每个编译器对每个问题都有自己的行为!

EN

回答 4

Stack Overflow用户

发布于 2012-05-10 15:15:03

undefined确实意味着未定义。也就是说,任何事情都可能发生。

它能依赖于编译器吗?是。

所有的编译器都能做同样的事情吗?是。

它今天能做一件事,明天能做一件事吗?是。

它会使程序崩溃吗?是。

它可以做我认为它应该做的事情,而且看起来工作得很好吗?是。

任何事情都有可能发生。

票数 3
EN

Stack Overflow用户

发布于 2012-05-10 15:09:26

关于未定义的行为,

C++标准1.3.24节说明:

允许的未定义行为范围从完全忽略具有不可预测结果的情况,到在翻译或程序执行期间以环境特有的记录方式(有或没有发出诊断消息)的行为,到终止翻译或执行(有诊断消息的发出)。

所以,是的,当未定义的行为发生时,编译器可以自由地显示他们想要的任何行为。

票数 2
EN

Stack Overflow用户

发布于 2012-05-10 15:06:22

在C++标准中规定了什么是未定义的行为。

根据定义,当编译器遇到表现出未定义行为的代码时,它生成的代码可以是任何东西。这是为了给编译器作者提供优化的回旋余地。

请注意,未定义的行为意味着您的程序可以做任何事情。它不能保证它会崩溃,或者抛出异常,或者写入内存的某个区域。正如您所知道的,它可以删除整个文件系统,然后倒出垃圾桶-按照C++标准,这是可以接受的。

远离未定义的行为。

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

https://stackoverflow.com/questions/10528952

复制
相关文章

相似问题

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