关于操作符的迷惑问题,抢分者乱入
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;
通过编译