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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马连家华 中级黑马   /  2012-2-27 16:42  /  1962 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

short s =4;
s += 5;
为什么编译会出错?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

7 个回复

倒序浏览
short s =4  把s 定义成short类型,
s+=5    运算后,进行了类型提升,s变成了int类型
于定义的short类型不匹配,所以会出现错误。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
对对对!这么简单我忘了,ytyt谢谢了哈
回复 使用道具 举报
本帖最后由 黑马胡林 于 2012-2-27 17:15 编辑

short s1 = 4; s1 = s1 + 4; (s1+4运算结果是int型,需要强制转换类型)short s1 = 4; s1 += 4;(可以正确编译)
回复 使用道具 举报
谢谢谢谢
回复 使用道具 举报
当然有错误,short占2个字节,int占4个字节,short型变量+上int型值计算结果是int型,占4个字节,然后付给一个short型变量s1,就要丢失2个字节的精度,这是不容许的。
回复 使用道具 举报
刘峰 发表于 2012-2-27 21:47
当然有错误,short占2个字节,int占4个字节,short型变量+上int型值计算结果是int型,占4个字节,然后付给 ...

知道了知道了,谢谢哈
回复 使用道具 举报
王康 黑马帝 2012-2-28 14:51:03
8#
王--明 发表于 2012-2-27 16:59
short s =4  把s 定义成short类型,
s+=5    运算后,进行了类型提升,s变成了int类型
于定义的short类型不 ...

你的答案不对吧!
short s = 4;
s +=5;
这是没有错的!
short s1 = 4; s1 = s1 + 4; (s1+4运算结果是int型,需要强制转换类型)
short s1 = 4; s1 += 4;(可以正确编译)
不明白管理员为什么要加分!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马