gcc says: 0 / 0 equals 1使用g++10.2编译时打印以下代码:
#include <iostream>
int main() {
int a = 0;
std::cout << "gcc says: 0 / 0 equals " << (a / a) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
clang并执行它返回 136 - 错误的算术运算)。编辑:有编译-fsanitize=undefined品牌g++产生一个运行时错误。感谢@chris。
除以零是未定义的行为。编译器将继续做任何使代码运行最快的事情。它甚至不会一致。
没有办法使这个结果导致编译器错误,因为编译器在编译时并不总是知道分母是否为 0。您必须自己进行检查。
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |