环境
- 操作系统:Ubuntu-24.04
- JDK:Zulu 21.0.3
原题
以下程序运行后输出结果是()?
|
|
- A、输出结果为:value is 99.9
- B、输出结果为:value is 9
- C、输出结果为:value is 9.0
- D、编译错误
思考
三目运算符的原理是如果?
左边为真,则执行:
左边,否则执行右边,那么这里的x > 4
为false
,肯定就是执行右边了,根据瞪眼法得出结论为B
。
实际运行一下,What???
|
|
为什么会是 9.0 呢?因为三目运算符会尽量保持两个操作数的类型一致,避免出现异常。如果两边都是基础数据类型且不为同一个类型,则小的类型会自动提升至大的类型,也就是隐式类型转换,他们的排序如下:byte < short(char) < int < long < float < double
。题目中的99.9
为float
,9
为int
,那么,三目运算符会将 9 转为 9.0,所以正确答案是C
。
引申
以下程序运行后会输出什么呢?
|
|