黑马程序员技术交流社区
标题:
s+=2,和s=s+2有什么区别
[打印本页]
作者:
q491039826
时间:
2015-8-29 23:42
标题:
s+=2,和s=s+2有什么区别
short s=2的情况下
作者:
Florida2015
时间:
2015-8-29 23:53
没有区别,就是两个格式看起来不一样
作者:
牛小爽
时间:
2015-8-30 00:38
s+=2 在short类型下,它会强制转换成short类型
而s=s+2 会是一个int类型
作者:
zx0210
时间:
2015-8-30 02:25
s=s+2编译的时候会报错!!
作者:
suichuan689
时间:
2015-8-30 13:27
自动类型转换问题
作者:
alogol
时间:
2015-8-30 14:03
本帖最后由 alogol 于 2015-8-30 14:34 编辑
s=s+2 编译的时候会出错
s+=2 不会
short类型与int类型相加,short类型会自动提升成int,所以 s+2 的值为int类型,把int类型的值赋给short类型的 s 会损失精度,因此直接写 s=s+2 会报错,但是写成 s+=2 的话会默认进行自动的类型转换,把 s+2 的结果强转成了short(即使损失精度),所以不会报错
作者:
地狱里的帅灵魂
时间:
2015-8-30 14:05
牛小爽 发表于 2015-8-30 00:38
s+=2 在short类型下,它会强制转换成short类型
而s=s+2 会是一个int类型
对 ,就是这个样子的
作者:
dddlinux
时间:
2015-8-30 14:09
s+=2 可以这么写,s = (short)(s+2);而如果不这么写的话,右边是int类型值,左边是short,直接赋值编译会报错的
作者:
marcojam
时间:
2015-8-30 15:08
s+=2会强制提升类型
s =s+2不会强制转型,因此报错
作者:
BlackHorse001
时间:
2015-8-30 17:10
s+=2具有默认强制类型装换功能,如题,2为int型数据,s为short型,s+=2不会报错,s=s+2就会报错(s+2自动升级为int型),说数据溢出,将int型赋值给short型。
作者:
forjunjian
时间:
2015-8-30 17:28
s=s+2; s会提升为int类型运算后赋值给s ,因为s的数据类型为short,从int类型赋值给short,所以会提示出错。
S+=2; 和上面一样,但运算结果会强制转换为等号左边的数据类型。
作者:
哈哈哈欠虫
时间:
2015-8-30 21:14
s=s+2中s在相加时会自动向上转型为int型
作者:
zhanglang
时间:
2015-8-30 21:16
s=s+2会报错。这里2默认为int类型。s+=2中包涵强制转换。可以编译
作者:
STARlove
时间:
2015-8-30 21:26
这个问题。。。貌似见过,,呦。。。又貌似没见。。。。。。。。
作者:
MengYa
时间:
2015-8-30 21:35
s+=2有强制转换,而s=s+2没有
作者:
wdj
时间:
2015-8-30 21:49
前者系统会默认有自动类型转换,而后者没有s+2之后会自动转换为int类型而s为short类型,所以会出错。
作者:
yz112069947
时间:
2015-8-30 21:51
要考虑精度转换,S+=2 会有自动类型提升
作者:
a6658637
时间:
2015-8-30 21:54
第一种情况会编译成功,第二种情况会编译失败
作者:
不忘初心、
时间:
2015-8-30 22:00
没啥区别,当s=2时。。。
作者:
疯狂的小豆丁
时间:
2015-8-30 22:07
说白了就是一个会强制转换类型,一个不会
作者:
坏寒
时间:
2015-8-30 22:23
太棒,了 赞一个
作者:
小二阳
时间:
2015-8-30 23:18
s+=2 在short类型下,它会强制转换成short类型
而s=s+2 是short 类型加上一个int类型,结果还是一个int类型
作者:
Glc90
时间:
2015-8-30 23:21
区别 s+=2是对的 s=s+2报错,因为short+2最终结果会是int 大类型到小类型 会报错
作者:
代晃
时间:
2015-8-30 23:40
这是考类型转换 += 类型会自动提升
作者:
平爷
时间:
2015-8-30 23:46
一个带强制转换 一个没有
作者:
MilesMatheson
时间:
2015-8-30 23:59
小伙子,这个问题你已经问了很多遍了,,,,,,,,,,,这种锲而不舍的求知的精神让人折服
作者:
不想睡
时间:
2015-8-31 09:00
s+=2,有强制类型转行,s=s+2,没有强制类型转行,会报错
作者:
陈思伟
时间:
2015-8-31 09:08
s+=2,有自动强转功能,把int类型转为short,所以不报错;后者自动转型为int类型和short类型有冲突,报错
作者:
hutudan1993
时间:
2015-8-31 09:11
s=s+2编译报错,是不对的, s+=2 的话会默认进行自动的类型转换
作者:
ln0491
时间:
2015-8-31 09:26
s+=2;会自动完成整型转换,s=s+2;右边计算后为整型要强制类型、转换,java中的byte char shot在进行算术运算时,默认为整型
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2