Coo*_*ect -3 c++ arrays ieee-754
为什么这会让人高兴呢
double zero = 0.0;
double a[] = { 0,0,0,0,0, zero/zero}; // NaN
cout << (a[5] == 5[a] ? "true" : "false") << endl;
Run Code Online (Sandbox Code Playgroud)
版画
false
Run Code Online (Sandbox Code Playgroud)
Jac*_*ley 23
编译器没有弄错,它与之无关a[5] == 5[a].zero/zero是一个无意义的表达式,并被分配NaN为结果,但NaN != NaN因为它可以以多种不相等的方式生成.
请注意,检查它我认为这实际上是严格未定义的行为,因为标准实际上并不需要使用IEEE 754或等效的浮点标准,并且实际上不支持NaN.如果它支持NaN,则第7.2.14节(在2011年标准草案中)要求NaN比较返回false.
| 归档时间: |
|
| 查看次数: |
327 次 |
| 最近记录: |