強制類型轉(zhuǎn)換
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;//這句為什么顯示的是錯誤語句??? }
2016-12-21
舉報
2017-01-02
public static void main(String[] args){ ? ? ? ?
????? short a = 2; ? ? ? ?
???? ?short b = 3; ? ? ? ?
???????short c = a+b;//此句報錯—— 錯誤: 不兼容的類型: 從int轉(zhuǎn)換到short可能會有損失
?????????????????????????????/**報錯原因:a,b雖已被賦值為short類型(16位),但是(a+b)的計算結(jié)果并沒有被賦值為 short類型。注意:+的優(yōu)先級高于=。所以先算出(a+b)的值為整數(shù)5(它會先被Java自動隱式轉(zhuǎn)換為int類型32位),此時再將5賦值給c(short類型16位),Java就不能自動隱式轉(zhuǎn)換了,想要轉(zhuǎn)換的話得用強制縮小轉(zhuǎn)換,即short c =(short)(a+b);
????*/
???????????????? }
正確的代碼如下:
public class Testis{
?public static void main(String[] args){
??short a=2;
??short b=3;
?/*
?*(a+b)的計算結(jié)果會被java自動隱式轉(zhuǎn)換成int類型
?*必須采用強制縮小轉(zhuǎn)換才能將計算結(jié)果賦值給short類型的c
?*/
??short c=(short)(a+b);
??System.out.println(c);
?}
}
希望你可以采納我的答案哦^-^
2016-12-21
兩個short型的數(shù)相加會自動轉(zhuǎn)成int型。精度小于int的會自動轉(zhuǎn)化成Int
2016-12-21
不兼容的類型:從int轉(zhuǎn)換到short可能會有損失;前面兩個存在隱式轉(zhuǎn)換;