请考虑
#include <iostream>
int main()
{
double a = 1.0 / 0;
double b = -1.0 / 0;
double c = 0.0 / 0;
std::cout << a << b << c; // to stop compilers from optimising out the code.
}
我一直认为a
将会是+Inf,b
将会是-Inf,c
将会是NaN。但我也听说过有种传言,严格来讲,浮点数除以零的行为是未定义的,因此上面的代码不能被视为可移植的C++。(理论上这会摧毁我超过百万行的代码堆栈的完整性。哎呀!)
谁是正确的?
注意,我对实现定义感到满意,但我所说的是猫吃、恶魔打喷嚏般的未定义行为。
std::cout << a << b << c;
? - WhiZTiM