黑马程序员技术交流社区
标题:
short s1 = 1; s1 = s1 + 1;有什么错?
[打印本页]
作者:
16463535
时间:
2013-4-18 13:31
标题:
short s1 = 1; s1 = s1 + 1;有什么错?
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
作者:
谷文仁
时间:
2013-4-18 16:26
向下与向上转型的问题 向下转型会丢失精度所以不行 换成long就可以
短整型(short),整型(int),长整型(long)
作者:
徐升2013
时间:
2013-4-18 16:30
一个是int类型 一个是short类型, 右边加法运算时,向上转型了,转回时没法自动转换的
作者:
hacket
时间:
2013-4-18 16:52
short s1 = 1;
s1 = s1 +1;
s1为short类型,当s1+1时,1为int类型,
s1+1会自动转成int类型,而s1为short,把一个int类型赋值给short会损失精度,
所以会报编译出错。
复制代码
作者:
selectgoodboy
时间:
2013-4-18 17:25
short占2个字节,int占4个字节,short型变量+上int型值计算结果是int型,占4个字节,然后付给一个short型变量s1,就要丢失2个字节的精度,这是不容许的。后面的那个是可以输出结果的。
作者:
zhuiyi0819
时间:
2013-4-18 19:22
当然有错误,short占2个字节,int占4个字节,(short)+(int)结果是int型,占4个字节,然后付给一个short型变量s1,这样就丢失2个字节的精度。
s1=s1+1;改成s1+=1;虽然是一个意思,但是在jvm里面是不同的方法做的,是运算符重载,所以是不一样的。
作者:
郎泽东
时间:
2013-4-18 21:43
在默认的情况先下,数字比如1 2 3 4 为int类型,要想避免一些不必要的麻烦,浮点数后要加f,long 要加 L double类型是默认带小数点的如, short 和 char 表达预算是要先转为int。如果结果需要保存为short.或者为char.有得重新转为short或cha类。这样便会丢失精度,如结果保存为整形那就没问题。比如 int a = 3 + 'a’ ;这就不会有问题
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2