黑马程序员技术交流社区
标题:
三元运算符问题
[打印本页]
作者:
猎鹰tianya
时间:
2014-1-4 20:49
标题:
三元运算符问题
本帖最后由 猎鹰tianya 于 2014-1-12 12:04 编辑
class Test
{
public static void main(String args[]){
int x=4;
System.out.println("value is "+ ((x>4) ? 99.9 :9));
}
}
复制代码
为什么结果是9.0呢,不解!!!
QQ截图20140104204638.png
(846 Bytes, 下载次数: 23)
下载附件
2014-1-4 20:48 上传
作者:
猎鹰tianya
时间:
2014-1-4 20:51
明明写的是9,怎么输出后就变成9.0了呢?
作者:
浮出一个美
时间:
2014-1-4 21:41
与前面的99.9有关,三目运算符也懂自动提升数据类型?不太清楚了。
总之
System.out.println("value is "+ ((x>4) ? 99 :9));
复制代码
这样结果就是9
作者:
XiaoS
时间:
2014-1-4 22:24
这是数据类型转换的问题。只要有double类型的数据参与运算(三目运算符也是运算符),所有参与运算的数据都自动提升为double型,99.9默认是double类型,所以后面的9会从int型自动提升为double型,就变成9.0了;希望你能明白!
作者:
yaohsieh
时间:
2014-1-4 22:27
"value is "+ ((x>4) ? 99.9 :9)//99.9是double类型,9是int类型,返回结果默认以范围大的为准,自动提升数据类型。
复制代码
作者:
haozi050
时间:
2014-1-12 12:01
因为三元运算符所有数据都会参与运算,类型会提升为double类型,所以是9.0.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2