检查以下代码片段:
片段#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;
除了 Snippet #1 之外,所有这些都编译得很好。这种行为如何合理?如果 Snippet #1 产生“可能的有损转换”错误,那么 Snippet #2 和 4 也应该,因为它们仍然包含 type 的文字int
。为什么它们编译成功?