将int加到short
这个问题在这里已经有了答案:
int i = 123456;
short x = 12;
x += i;
实际上是
int i = 123456;
short x = 12;
x = (short)(x + i);
而x = x + i只是x = x + i 。 它不会自动将其转换为short并因此导致错误( x + i的类型为int )。
E1 op= E2形式的复合赋值表达式等价于E1 = (T)((E1) op (E2)) ,其中T是E1的类型,只是E1只计算一次。
- JLS§15.26.2
数字被视为int除非你明确地施放它们。 因此,在第二个语句中,当使用文字数字而不是变量时,它不会自动将其转换为适当的类型。
x = x + (short)1;
...应该管用。
整型类型(int,short,char和byte)的+运算符总是返回一个int作为结果。
你可以看到这个代码:
//char x = 0;
//short x = 0;
//byte x = 0;
int x = 0;
x = x + x;
除非x是一个int否则它不会编译。
上一篇: Adding int to short
下一篇: Why does the compiler not give an error for this addition operation?
