float f = -0.0; // Negative
及び結果はtrue
なり負のゼロ
f == -0.0f
と比べ。どちらの場合も真であることが結果なぜ
しかし
float f = 0.0; // Positive
と負のゼロ
f == -0.0f
と比較しても、結果はtrue
代わりのfalse
でしょうか?ここで
がa MCVE to test it (live on coliru)です:
#include <iostream>
int main()
{
float f = -0.0;
std::cout<<"==== > " << f <<std::endl<<std::endl;
if(f == -0.0f)
{
std::cout<<"true"<<std::endl;
}
else
{
std::cout<<"false"<<std::endl;
}
}
出力:署名した負のゼロtrue
ゼロと比較しなければならないためだ
==== > -0 // Here print negative zero
true
[その他](https://stackoverflow.com/a/45790355/4711812)に記載されているように、あなたは今日質問しています:C++に負のゼロというものはありません。 – muXXmit2X
それはなぜでしょうか? "負の0"はありません。どちらもゼロです。もちろん、0との比較はtrueを返します。 – Zinki
https://stackoverflow.com/questions/43086963/is-negative-zero-always-equal-zero – CBroe