黑马程序员技术交流社区

标题: 请问short s=0;short s=0;正确,而s=s+1;不正确,为什么呢? [打印本页]

作者: 千年一梦    时间: 2015-2-21 15:08
标题: 请问short s=0;short s=0;正确,而s=s+1;不正确,为什么呢?
请问short s=0;short s=0;正确,而s=s+1;不正确,为什么?
作者: alvis2015    时间: 2015-2-21 15:23
  1. short s = 0;//s为short类型
  2. s = s + 1;//此处+1,1是一个int型常量
复制代码

第二句会有一个自动类型转换,因为int型比short型长,所以s由+1后自动转换成了int
作者: alvis2015    时间: 2015-2-21 15:43
s+1得到的结果自动转换成了int,与声明的s的类型short不匹配,会有编译错误,需要强制类型转换。
作者: huangchunwei    时间: 2015-2-21 15:55
S+1的结果为int类型,而将结果又赋值给S,S为short类型,所以失败。
作者: 鲍阳    时间: 2015-2-21 16:19
因为1是int类型的,右边的值提升成了int,而左边是short,可能丢失数据




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