学习java中,问下三目运算符的一些东西

int x=4;
if(x>4)?9.99:9;
输出的是9.0
而我如果改成if(x>4)?99:9;
输出的就是9了
这里有进行隐式转换么,比如把int类型的9转换成了double的9.99.求解

2个回答

三目运算符是这样的:A?B:C,若A表达式为真,则三目运算符结果为B表达式的结果, 若A为假,则为C的结果,那么4>4为假,那么三目运算式结果为C,也就是sizeof(A),还有类型转换,比较时把整形的变成double型的

我想知道的你上面的写法能编译通过吗?你那也不是三目运算符啊,你这样写:
int x=4;
double result = (x>4?9.99:9);

java编译器会告诉返回值是int还是double。

你的代码都不能编译。
这里不要写if

9.99:9表达式的类型是double,所以toString()为9.0
99:9,表达式的类型是int,所以toString为9

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐