 
		慕少4931880
2016-12-21 21:12
public static void main(String[] args){
short a = 2;
short b = 3;
short c = a+b;//这句为什么显示的是错误语句??? }
 
				public static void main(String[] args){
short a = 2;
short b = 3;
short c = a+b;//此句报错—— 错误: 不兼容的类型: 从int转换到short可能会有损失
/**报错原因:a,b虽已被赋值为short类型(16位),但是(a+b)的计算结果并没有被赋值为 short类型。注意:+的优先级高于=。所以先算出(a+b)的值为整数5(它会先被Java自动隐式转换为int类型32位),此时再将5赋值给c(short类型16位),Java就不能自动隐式转换了,想要转换的话得用强制缩小转换,即short c =(short)(a+b);
    */
                 }
正确的代码如下:
public class Testis{
 public static void main(String[] args){
  short a=2;
  short b=3;
 /*
 *(a+b)的计算结果会被java自动隐式转换成int类型
 *必须采用强制缩小转换才能将计算结果赋值给short类型的c
 */
  short c=(short)(a+b);
  System.out.println(c);
 }
}
希望你可以采纳我的答案哦^-^
 
				两个short型的数相加会自动转成int型。精度小于int的会自动转化成Int
 
				不兼容的类型:从int转换到short可能会有损失;前面两个存在隐式转换;
Java入门第一季(IDEA工具)
1168088 学习 · 18754 问题
相似问题