因为1可以用short表示,但是两个short相加一定返回int,即使这个int可以用short表示

解决方案 »

  1.   

    int和short类型转换的问题
      

  2.   

    short s1 = (short)1; s1 = s1 + (short)1;
    这样就对了吧
      

  3.   

    TO:zhoudut(快乐的Java小菜鸟) 
    你那样写一样错的
      

  4.   

    两种写法都是错误的,因为这两个数相加之后的值赋给一个short 型,会丢失精度,容易造成溢出。
      

  5.   

    TO:zhoudut(快乐的Java小菜鸟) 
    你那样写一样错的
      

  6.   

    short s1 = 1; s1 = s1 + 1;
    表达试中有精度大于int型的运算会取精度大于int型的那个类型进行运算.其它运算都转成整形进行运算,s1+1的结果为整形,所以应该是s1=(short)(s1+1);而s1 += 1中程序运行时相当于进行了强制类型转换,所以是对的.
      

  7.   

    同意cooled(青山依旧) 说的。
      

  8.   

    short s1 = 1; 
    s1 += 1; 等价于 s1 = (short)(s1+1);
      

  9.   

    s1 += 1<=> s1=(short)(s1+1);
    也就是所说的强制类型转换
      

  10.   

    对,是这个意思。一个是short,一个是int,不强制转换那肯定会出错。
      

  11.   

    好像是这样的,short s1 = 1; s1 = s1 + 1;//运算s1+1的时候分配了一个空间存放结果然后再把结果赋值给s1.临时结果为int而赋值对象为short---出错。
    而short s1 = 1; s1 += 1;//不分配临时空间,直接在s1所在空间的内容也即s1加上一。