为什么有些程序以未定义的行为执行,而另一些则没有?
Why some programs execute with undefined behavior and others don't?
我正在阅读关于类型转换的内容,听说有些编译器无法检测未定义的行为,例如将超出范围的值赋给有符号类型的对象,结果将是未定义的。
我知道这样的程序被称为"不可移植的",执行一个未定义的表达式是错误的。
它会导致什么,为什么在一些编译器/机器上发生?
对于像c++这样的编译语言来说,检测所有不需要的条件是非常低效的。在编译时,您可能会说它的范围从解决停机问题到根本不可能解决。在运行时,检测所有这些条件同样会很慢。所以标准有这样的概念告诉你,程序员,'不要那样做',但也告诉编译器和运行时实现者,'你不必从她或他自己的愚蠢中拯救程序员。'
相关文章:
- 具有外部"c"和程序集的未定义函数
- CPP 程序中未定义的行为
- 在 C++17 中,是否未定义使用无锁原子学保护从信号处理程序传递的数据?
- 我无法让我的程序工作,我一直得到未定义的符号:C
- 在Linux/Ubuntu中编译openCV应用程序时,如何解决未定义的引用cv:..?
- C++CTRL+C处理程序有未定义的行为
- 在Qt应用程序中包含Python.h会导致对Qt函数的未定义引用
- 编译简单的多文件类程序时出现未定义的引用错误
- 我对C++程序有一个未定义的参考,不知道如何处理它
- 错误:尝试在全新系统安装中构建应用程序后未定义对'...'的引用
- 在 C++ 中调用时对内联程序集代码的未定义引用
- Ebpf:帮助程序的未定义符号
- C++程序调用 C 函数 在 g++ 链接期间获取未定义的引用
- r-工作程序中对自定义函数的未定义引用(C++和RcppParallel)
- MSVC 2015-我程序中的SSE编译器错误或错误/未定义的行为
- 在 qt 控制台应用程序中未定义对 'vtable for myObj' 的引用 - 信号和插槽
- 部署后的Linux qt应用程序-符号查找错误:libQt5Core.so.5未定义的符号:uncv_getDefaul
- 构建应用程序时未定义的引用错误;
- 无法将 Linux openGL 程序与 mingw32 交叉编译。配置.log错误:未定义对"_glEnable"的引用
- 如何构建使用 OpenCV 的 XCode 6 iOS 应用程序 - 未定义错误__cplusplus