首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么System.out.print(三元操作符)打印浮动输出?

为什么System.out.print(三元操作符)打印浮动输出?
EN

Stack Overflow用户
提问于 2020-03-12 12:37:28
回答 3查看 176关注 0票数 0

我正在讨论一些java面试问题MCQ,在那里我发现了这个代码片段,其中我不理解输出,尽管它只有2行代码。

代码语言:javascript
复制
int a = 8;
System.out.println(((a<8)? 9.9 : (int)9));

输出是9.0我不明白为什么不是9?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-03-12 13:30:08

因为你没有把他们都投进去。您只是将第二个结果转换为int。

但是不要忘记,第一个结果是浮动,所以所有的结构都必须是相同的类型。您需要将它们都转换为相同的类型,如int或float。

代码语言:javascript
复制
int a = 8;
System.out.println(""+ (int)( (a<8)? 9.9 :  9));

产出:

代码语言:javascript
复制
9
票数 1
EN

Stack Overflow用户

发布于 2020-03-12 12:48:29

三元运算符具有在计算值之前定义的返回类型。因此,如果操作符可以同时返回float和int,那么这两个值都被向上转换到float。你的回答是这样的:

代码语言:javascript
复制
(int)9 -> (int)9 -> (float)9.

其他情况:如果添加float和int,就会得到float。

代码语言:javascript
复制
int a = 2;
float b = 4.3f;
float c = a + b;
票数 3
EN

Stack Overflow用户

发布于 2020-03-12 12:43:04

三元算子的返回类型是根据非常复杂的规则:Java语言规范确定的。具体而言,在你的情况下:

否则,二进制数字提升(§5.6.2)应用于操作数类型,条件表达式的类型是第二和第三个操作数的提升类型。

因此,在您的情况下,您将得到返回类型double。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60654293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档