【发布时间】:2017-05-26 02:33:18
【问题描述】:
为什么以下语句在编译时显示错误
int a=10,b=20;
byte c=(a<b)?40:50;
System.out.println(c);
【问题讨论】:
-
如果您删除类型
byte它将编译。b已在封闭范围内声明。 -
int a=10,b=20;字节 c=(a
-
现在发生了什么
-
根据您的更新,代码未编译,因为整数的默认类型是
int类型,而您可以将其转换为byte以消除编译错误,如下所示 - ->byte c=(a<b)?(byte)40:50;。这称为缩小类型,您可能会丢失数据。 -
不,那不会编译,括号应该包围类型
byte。您可以按照我之前评论中的建议或提供的答案中建议的方式进行操作。
标签: java ternary-operator