黑马程序员技术交流社区

标题: 有关强制转换类型的问题。 [打印本页]

作者: 窦超    时间: 2011-12-20 15:03
标题: 有关强制转换类型的问题。
本帖最后由 窦超 于 2011-12-20 15:32 编辑

short s1 = 1; s1 = s1 + 1;在这里面S1+1变成了int型然后需要强制转换类型才可以,但是 short s1 = 1; s1 += 1;这个就不存在这样的问题,我想问问+=的运行机制在后台是怎么样的逻辑语言使得他可以避免类型的改变?
作者: 常兆鹏    时间: 2011-12-20 15:07
+=在运算时是自动进行类型转换,自动从short型转换为int型。
作者: 房宝彬    时间: 2011-12-20 15:08

S1+=1  和 S1=S1+1是等价的
作者: 窦超    时间: 2011-12-20 15:08
常兆鹏 发表于 2011-12-20 15:07
+=在运算时是自动进行类型转换,自动从short型转换为int型。

也就是说他还是进行了转换,只是后台自动转换了而已对么

作者: 常兆鹏    时间: 2011-12-20 15:12
窦超 发表于 2011-12-20 15:08
也就是说他还是进行了转换,只是后台自动转换了而已对么

对了 就是这样的
作者: 窦超    时间: 2011-12-20 15:25
房宝彬 发表于 2011-12-20 15:08
S1+=1  和 S1=S1+1是等价的

你说这个应该实在没有限定的前提下,我前提是S1是short型的,而1是int型的他俩相加的时候实际上是S1被强制的提升了
作者: 应国炎    时间: 2011-12-20 15:38
s1 += 1;s1后台自动提升,不会报错.  而s1 = s1+1;不会自动提升,运行会溢出.
应该是这样




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2