黑马程序员技术交流社区
标题:
short s=3; s=s+2 ; s+=2;为什么第一个不正确?
[打印本页]
作者:
zhangchao5292
时间:
2016-2-15 22:17
标题:
short s=3; s=s+2 ; s+=2;为什么第一个不正确?
s=s+2;因为s会被提升为int类型 ,运算后的结果还是int类型,无法赋值给short类型。
s+=2;编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。
解释的感觉还是不懂,那shor s=3, int s=3;反映到二进制不都是一样的吗?
作者:
玉质彼端
时间:
2016-2-15 23:53
不一样,short占2个字节存储单位,short s=3用两组8位2进制数表示为00000000 00000011。
而int占4个字节存储单位,int s=3要用4组8位2进制数来表示00000000 00000000 00000000 00000011。
可见int的取值范围比short大一些。
作者:
xieyangxuejun
时间:
2016-2-16 07:10
楼上说的对,通俗是长度不同,一个萝卜一个坑,坑多的萝卜不能往坑少中~
作者:
zhangchao5292
时间:
2016-2-17 10:47
非常感谢,这个知识点终于弄明白了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2