将int加到short

这个问题在这里已经有了答案:

  • 为什么Java的+ =, - =,* =,/ =复合赋值操作符需要转换? 11个答案

  • 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)) ,其中TE1的类型,只是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否则它不会编译。

    链接地址: http://www.djcxy.com/p/12783.html

    上一篇: Adding int to short

    下一篇: Why does the compiler not give an error for this addition operation?