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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一个小菜 中级黑马   /  2014-12-22 21:48  /  1107 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

short s=3;
s=s+2;
s +=2;
有什么区别?
如果是int a = 3; a %=4是不是等于a = 4%a , 结果等于1?

9 个回复

倒序浏览
第一个呀  s=s+2 是不行的 s+2结果是int型  而 s+=2 是可以的 第二个问题 等于a=a%4是取余 结果是3
回复 使用道具 举报
第一:s = s+2;相加时,数值类型为int。而定义时是short,虽然 s+=20和 s = s+2效果等价,但是还是有区别的+=这种赋值运算符,其实隐含了强制类型转换功能。也就是说short s = 5;s += 2;等价于 s = (short)(s+2);
第二:a %=4等于a = a%4;答案是3,如果你的a是-3,最后结果是-3.最后结果的符号与左边的符号一致。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
s=s+2;
编译时会报错,因为表达式s+2运算期间,变量s会被自动提升为int型的,其运算结果也就会成为int型,此时如果把该结果赋值给short型的变量,就会报错,需进行强制转换:s=(short)(s+2);
s +=2;
编译通过并正确运行,因为+=运算符进行赋值时,会自动完成强制类型转换,所以会得到结果s=5
a %=4等价于a=a%4,其结果是3.
其实+=,-=,*=,/=,,%=运算符在进行赋值运算时,都隐含了强制类型转换功能
回复 使用道具 举报
清浅。。 来自手机 中级黑马 2014-12-23 00:11:51
报纸
顶二楼……
回复 使用道具 举报
老毕视频说的很清楚的基本概念,请多多仔细学习
回复 使用道具 举报
呢? 中级黑马 2014-12-23 00:21:09
7#
注意类型强转就好啦
回复 使用道具 举报
这个毕向东老师的基础教学视频里有的,你可以去看看。
回复 使用道具 举报
红楼 中级黑马 2014-12-23 21:38:59
9#
隐含一个强制类型转换
回复 使用道具 举报
s+2运算完是int类型,s+=2运算完s是short类型。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马