黑马程序员技术交流社区

标题: short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? [打印本页]

作者: fei_xiong    时间: 2014-4-28 17:42
标题: short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
哪个高手来说下啊
作者: doyxy    时间: 2014-4-28 18:03
s1=s1+1,1默认是int型,两个类型不能直接相加,+=就没错
作者: skill20    时间: 2014-4-28 18:18
short s1 = 1;
s1 = s1 + 1 --- 1 是int类型,  int 不能自动转short。so~~~报错。
作者: 游侠儿    时间: 2014-4-28 18:35
本帖最后由 游侠儿 于 2014-4-28 19:57 编辑

s1是short占两个字节,1是常量,容量小的类型与容量大的类型进行计算,默认转换为容量大的数据类型;但是short、byte、char类型只要参与运算都会上升为int类型,比如说 short s1 = 1,s2 = 2;s1 = s1 + s2;依然会报错,因为他已经参与了运算上升为了int类型,如果改为s1=1+1;则不会报错,因为1+1得到的还是常量。数据类型按容量大小排序为:byte,short,char->int->long->float->double,容量数据大的数据类型不能再赋值给容量数据小的类型,所以会报错




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