【问题标题】:Ternary operator with narrowing concept具有缩窄概念的三元算子
【发布时间】: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&lt;b)?(byte)40:50;。这称为缩小类型,您可能会丢失数据。
  • 不,那不会编译,括号应该包围类型byte。您可以按照我之前评论中的建议或提供的答案中建议的方式进行操作。

标签: java ternary-operator


【解决方案1】:

b 已经被声明了。

你可以试试

int a=10,b=20;   
byte c=(byte) ((a<b)?40:50);
System.out.println(c);

【讨论】:

  • 如果将任何变量设为final,则无法更改final变量的值。因此,无需转换为字节。你可以试试:byte c=(10
猜你喜欢
  • 2012-08-15
  • 1970-01-01
  • 2016-09-02
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
相关资源
最近更新 更多