日期:2014-05-20  浏览次数:20657 次

关于操作符的迷惑问题,抢分者乱入
short   s=1;short   s=s+1;
这是肯定不对的,
但是为什么short   s=1;short   s+=1;这样写就对呢??

困惑!请高手解答!!

------解决方案--------------------
你的编译器有问题,两种写法都不对
------解决方案--------------------
short s=1;short s=s+1;
这只知道这个,因为加法运算一边是short一边是int,所以这个运算结果会是int,而左边却是short s 所以说这个不行,或者强制转换才可以。
------解决方案--------------------
前一个是自动类型提升:short--> int
下一个是不会出现自动类型提升,就是这样规定的
------解决方案--------------------
我的理解是short s=s+1由于int型的1,导致s自动转型为int所以错误
但是s+=1其实应该和c++中的操作符重载一样,+=可以看作是一个函数,这样就可以认为是
(short)(s+=(1));
全是猜测,谈谈而已:)
------解决方案--------------------
下面的自动进行类型转换
上面的不能
------解决方案--------------------
前一个是自动类型提升:short--> int
下一个是不会出现自动类型提升,就是这样规定的
正确
------解决方案--------------------
java 解惑 书上有解释
记得好像是T+=T 是带隐式转换的
------解决方案--------------------
我用jdk1.6
short i = 1;
i += 1;
通过编译