慕少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工具)升级版
1165550 学习 · 17586 问题
相似问题