計算機算術
x がNaNのとき、多くのプログラミング言語で x == x を評価した結果はどれか。
- A真
- B偽
- C例外が起きてプログラムが必ず停止する
答えと解説を見る
正解:B. 偽
IEEE 754では、NaNは「数ではない」値なので、どんな値との比較でも等しくならず、NaN自身との比較でも x == x は偽になります(x != x は真)。この性質を使って、x != x でNaNかどうかを判定する書き方も使われますが、通常は専用の関数(isnanなど)を使います。NaNは 0 ÷ 0 や ∞ − ∞ などから生まれ、そのあとの計算にも広がっていきます。比較で例外が起きて止まるのは既定の動作ではありません。
- A. NaNどうしは等しいとみなされません。
- B. 正しい。NaNは自分自身とも等しくなりません。
- C. 比較で必ず停止するわけではありません。