此问题在此处已有答案:
Why is the resulting type of a division of short integers in Java not a short integer?(3个答案)
昨天关门了。
public class Main {
public static void main(String[] args) {
short x = 10;
x = x * 5;
System.out.print(x);
}
}
字符串
我希望输出为50。为什么显示编译错误?在C编程中,表达式x = x * 5将在内部转换为整数,对吗?所以我希望在Java中也是这样。
1条答案
按热度按时间1l5u6lss1#
考虑以下情况:
字符串
以上是允许的,因为编译器认识到所分配的值在目标类型的正值范围内(字节为7位,简称为15位)。
但是,当执行类似
s = s + 10;
的操作时,右侧会被评估为int
,因此无法在不进行转换的情况下重新分配为short。s = (short)(s + 10)
的值。但是
s += 10;
是允许的,因为它是一个赋值操作,因此不需要强制转换。请查阅Java语言规范中的Numeric Contexts以获取此信息和其他相关信息。