以下のコードがどのように50.0を印刷するのか理解できません
public class Pre
{
public static void main(String[] args)
{
int x=10;
System.out.println((x > 10) ? 50.0 : 50); //output 50.0
}
}
それは50.0ではなく50(私は推測する)を印刷するはずです
上記のコードは以下のコードと同等ではありませんか?、
public class Pre
{
public static void main(String[] args)
{
int x=10;
if(x>10)
System.out.println(50.0);
else
System.out.println(50);//output
}
}
それらが同等である場合、出力の違いはなぜですか?
Javaは型が一貫していることを確認するため、最初のステートメントで
(x > 10) ? 50.0 : 50
最初にdoubleがあるため、式の戻り値の型はdoubleであり、リテラルintはdoubleに変換されます。したがって、条件式の両側は同じです!
に変更した場合
System.out.println((x > 10) ? 50.0 : 49);
それは49.0を印刷します。
if / elseは式ではないため、変換を行う必要はありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加