不一致的“从int到字节的可能有损转换”编译时错误
检查以下代码段:
片段 #1
int a=20;
int b=30;
byte c= (a>b)? 20:30;
Error:
incompatible types: possible lossy conversion from int to byte
byte c= (a>b)? 20:30;
片段 #2
int a=20;
int b=30;
byte h1=70;
byte c= (a>b)? 20:h1;
片段 #3
int a=20;
int b=30;
byte h1=70;
byte h2=89;
byte c= (a>b)? h1:h2;
片段 #4
byte c= (true)? 20:30;
除了片段 #1 之外,所有这些都编译正常。这种行为如何合理?如果代码段 #1 产生“可能的有损转换”错误,则代码段 #2 和 4 也应该如此,因为它们仍包含 类型的文本。为什么它们编译成功?int