我想知道为什么//1
语句被编译器接受而//2
语句不被
//1
int k = 99999999;
byte l = (byte)k;
//2
byte b = 1;
int i = 10;
byte z = (byte)i+b; //compiler rejected
Type mismatch: cannot convert from int to byte using ternary operator给了我一些想法,但是我不明白为什么编译器可以将l
中的变量//1
解析为可接受,而不解析{{ 1}}
答案 0 :(得分:1)
您仅将第一个数字byte
而不是全部和转换为i
。您必须添加括号:
byte z = (byte) (i+b);
答案 1 :(得分:1)
Plus始终返回int。因此,您需要将整个表达式显式地转换为字节。
(byte)(i+b)