A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© q491039826 中级黑马   /  2015-8-29 23:42  /  8623 人查看  /  30 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

short s=2的情况下

30 个回复

倒序浏览
没有区别,就是两个格式看起来不一样
回复 使用道具 举报 0 1
s+=2  在short类型下,它会强制转换成short类型

而s=s+2 会是一个int类型
回复 使用道具 举报
s=s+2编译的时候会报错!!
回复 使用道具 举报
s=s+2编译报错,是不对的
回复 使用道具 举报
自动类型转换问题
回复 使用道具 举报
alogol 中级黑马 2015-8-30 14:03:39
7#
本帖最后由 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 00:38
s+=2  在short类型下,它会强制转换成short类型

而s=s+2 会是一个int类型

对 ,就是这个样子的
回复 使用道具 举报
s+=2 可以这么写,s = (short)(s+2);而如果不这么写的话,右边是int类型值,左边是short,直接赋值编译会报错的
回复 使用道具 举报
s+=2会强制提升类型
s =s+2不会强制转型,因此报错
回复 使用道具 举报
s+=2具有默认强制类型装换功能,如题,2为int型数据,s为short型,s+=2不会报错,s=s+2就会报错(s+2自动升级为int型),说数据溢出,将int型赋值给short型。
回复 使用道具 举报
s=s+2;  s会提升为int类型运算后赋值给s ,因为s的数据类型为short,从int类型赋值给short,所以会提示出错。
S+=2;  和上面一样,但运算结果会强制转换为等号左边的数据类型。
回复 使用道具 举报
s=s+2中s在相加时会自动向上转型为int型
回复 使用道具 举报
s=s+2会报错。这里2默认为int类型。s+=2中包涵强制转换。可以编译
回复 使用道具 举报
这个问题。。。貌似见过,,呦。。。又貌似没见。。。。。。。。
回复 使用道具 举报
s+=2有强制转换,而s=s+2没有
回复 使用道具 举报
wdj 中级黑马 2015-8-30 21:49:26
17#
前者系统会默认有自动类型转换,而后者没有s+2之后会自动转换为int类型而s为short类型,所以会出错。
回复 使用道具 举报
要考虑精度转换,S+=2 会有自动类型提升
回复 使用道具 举报
第一种情况会编译成功,第二种情况会编译失败
回复 使用道具 举报
没啥区别,当s=2时。。。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马