short s=1;short s=s+1;
这是肯定不对的,
但是为什么short s=1;short s+=1;这样写就对呢??困惑!请高手解答!!

解决方案 »

  1.   

    short s=1;short s=s+1;
    这只知道这个,因为加法运算一边是short一边是int,所以这个运算结果会是int,而左边却是short s 所以说这个不行,或者强制转换才可以。
      

  2.   

    前一个是自动类型提升:short-->int
    下一个是不会出现自动类型提升,就是这样规定的
      

  3.   

    我不明白的就是这样写为什么是对的:short s=1;short s+=1
      

  4.   

    我的理解是short s=s+1由于int型的1,导致s自动转型为int所以错误
    但是s+=1其实应该和c++中的操作符重载一样,+=可以看作是一个函数,这样就可以认为是
    (short)(s+=(1));
    全是猜测,谈谈而已:)
      

  5.   

    前一个是自动类型提升:short-->int
    下一个是不会出现自动类型提升,就是这样规定的
    正确
      

  6.   

    java 解惑 书上有解释
    记得好像是T+=T 是带隐式转换的
      

  7.   

    我用jdk1.6
    short i = 1;
    i += 1;
    通过编译