char x='X';
int i=89;
System.err.println(false?x:89);
看看这个输出多少?
答案: Y
char x='X';
int i=89;
System.err.println(false?x:i);
这个呢?
答案: 89
原因:条件表达式的两个操作数同类型的话没什么说的,要是不同类型
{
如果一个操作数类型为T(byte,short或char),而另一个为int类型的常量表达式,并且该常量可以被T表示,则条件表达式的类型就是T。
如果不能被T表示,或者别的情况,统统采用二进制数字提升,条件表达式就是被提升后的类型。(向二进制位数多的的看齐)。
}