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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lvwenwen88 黑马帝   /  2012-1-5 21:02  /  2146 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

s1 += 1;有什么错?

7 个回复

倒序浏览
你这问题 形容的也太抽象拉,哥们。
你这S1是什么类型的啊,会不会是类型转换时候出的错,这个问题 在论坛里有很多人回答,你可以搜索一下。

评分

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

查看全部评分

回复 使用道具 举报
short s1 = 1; s1 += 1;这两句没错啊,如果要说错也是short s1 = 1; s1 =s1+1;有错
因为s1=s1+1这句话先是算出s1+1的值,然后再将值赋给s1,由于s1+1得到是一个int类型的值(运算中s1自动转换成int类型),当你把这个int类型(4个字节)的赋给右边2个字节的short类型s1就会损失精度,当然也就会报错了。想不报错就必须强转:s1=short(s1+1);
而s1+=1这句话着不同,它只运算了一次,就直接将s1+1的值赋给了s1,并且自动完成了强转的动作。
回复 使用道具 举报
把源程序贴出来我们判断吧,
回复 使用道具 举报
我晕,看到两个相似的问题,本来是要发到那个的,结果发错了
不过,这也还算适合你问的问题,楼主你就一句s1+=1;也真够猛的,我想你问的是应该是short s1=1;s1+=1;有什么错吧,所以我发的倒还是挺对你那问答的

评分

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

查看全部评分

回复 使用道具 举报
纠结啊,强转的那少了个括号,要s1=(short)(s1+1)才行
回复 使用道具 举报
沈样 黑马帝 2012-1-6 11:35:13
7#
+=这个运算这个基础类型的都可以,但是如果不是就不好说了,你可以贴代码,否则不好分析
回复 使用道具 举报
hort s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。
      这个是我从网中给你搜到的   这个要说是一个 面试的题目     我给你把那几个笼统的给你找出来了   你可以看看  希望 到时候  你找工作的时候 也能用到这些 知识!{:soso_e130:}

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马