将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?