javaに奇妙なものがいくつか見つかりました。Javaの奇妙なもの
コード:
System.out.println(System.getProperty("java.version"));
System.out.println((true) ? (int)2.5 : 3.5);
System.out.println((true) ? (int)2.5 : 3);
System.out.println((true) ? (int)2.5 + "" : 3.5);
結果:
1.8.0_40 2.0 2 2
それは何ですか? falseの値がdoubleでない場合、またはtrueの場合に文字列値がvalueに追加された場合にのみ整数値が返される理由は?なぜ2行目の丸めが(int)castによって動作するのですが、double値はまだ返りますか?バグですか?概略において
いいえ、これらはバグではありません。 – Jesper
コンパイラに関する限り、 '?:'式全体には1つの型しか存在せず、両者の間で共通の最も狭い型を見つけることによってそれが分かります。 –
(私は最後の行がコンパイルされていることに驚きました。) –