我认为任何算术表达式的结果至少是一个int。7 / 3是一个表达式 - 它有一个操作符(除法)。
但是为什么这个可以编译通过呢?
byte b1 = 7 / 3; // 7/3 is not a literal?
short b2 = 7 / 3; // 7/3 is not a literal?
char b3 = 7 / 3; // 7/3 is not a literal?
那 f1() 编译通过了吗?
byte f1() {
return 7 / 3; // Why is it allowed? Why isn't 7 / 3 an int ?
}
byte f2(int x) {
return x / 3; // c.ERR - type mismatch
}
byte f3(byte x) {
return x / 3; // c.ERR - type mismatch
}
附言:这个问题和其他不同,因为我知道整数除法(向零取整)7 / 3 的结果是2,但它应该是int类型,而不是byte或short。