short a=3; short b=4; short c=a+b;//报错 short d=3+4;//没错 这是为什么?同样是3+4,为什么用变量相加就会报错,而直接用数字相加就没错呢?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 06:42:28
short a=3; short b=4; short c=a+b;//报错 short d=3+4;//没错 这是为什么?同样是3+4,为什么用变量相加就会报错,而直接用数字相加就没错呢?

short a=3; short b=4; short c=a+b;//报错 short d=3+4;//没错 这是为什么?同样是3+4,为什么用变量相加就会报错,而直接用数字相加就没错呢?
short a=3; short b=4; short c=a+b;//报错 short d=3+4;//没错 这是为什么?
同样是3+4,为什么用变量相加就会报错,而直接用数字相加就没错呢?

short a=3; short b=4; short c=a+b;//报错 short d=3+4;//没错 这是为什么?同样是3+4,为什么用变量相加就会报错,而直接用数字相加就没错呢?
我来为你解答这个问题,java中只有int的值超出范围时,才会从头开始计数,就比如 int i=2147483647时,是int的最大值.
;i=i+1;这时int就会超出范围,它就会从-2147483648开始,从最小的又开.但是其他类型不是这样的,就像short类型它默认不是这样的,它如果超出范围就会报错.你这里的short c=a+b,因为a是变量,b是变量,它不能确定变量是不是超出short的范围,就报错了,short d=3+4是两个具体的数值相加,它能判断出3和4都在short的范围内,自然不会报错.