javaで変数の計算をすると「精度が失われる可能性があるintからshortへの変換」が出る


javaで変数計算をしていると下のようなエラーが出ました

**_エラーメッセージ_**

[code]

    精度が失われる可能性があるintからshortへの変換
    short c =a+b
    
[/code]

**_ファイルの内容_**

[code]

    byte a = 64;
    short b = 100;
    short c =a+b 
    
[/code]

どこで変数がintになったのですか？




[java](/questions/tagged/java "'java' のタグが付いた質問を表示") の仕様として `+` 等、二項演算子の処理の際には
`short` `byte` では演算されず `int` に暗黙の型変換がなされる (これは [c](/questions/tagged/c "'c'
のタグが付いた質問を表示") の仕様を引き継いでるんでしょう) ので  
<https://docs.oracle.com/javase/specs/jls/se10/html/jls-5.html#jls-5.6.2>  
`byte + short` の結果は `int` になります。

似たような例が挙げられていますね  
<https://www.javadrive.jp/start/cast/index5.html>




[java](/questions/tagged/java "'java' のタグが付いた質問を表示") の仕様として `+` 等、二項演算子の処理の際には
`short` `byte` では演算されず `int` に暗黙の型変換がなされる (これは [c](/questions/tagged/c "'c'
のタグが付いた質問を表示") の仕様を引き継いでるんでしょう) ので  
<https://docs.oracle.com/javase/specs/jls/se10/html/jls-5.html#jls-5.6.2>  
`byte + short` の結果は `int` になります。

似たような例が挙げられていますね  
<https://www.javadrive.jp/start/cast/index5.html>

