Javaでは、次のコードスニペットがあるとします
byte b = 127;
b=-b ;//(which require a cast due to numeric promotion)
b=++b; //does not require cast
Javaでは、次のコードスニペットがあるとします
byte b = 127;
b=-b ;//(which require a cast due to numeric promotion)
b=++b; //does not require cast
のJLS仕様に++
は次のように書かれています:
前置インクリメント式の型は、変数の型です。
.... 加算の前に、値 1 と変数の値に対してバイナリ数値昇格 (§5.6.2) が実行されます。必要に応じて、合計は縮小プリミティブ変換 (§5.1.3) によって縮小されるか、格納される前に変数の型へのボックス化変換 (§5.1.7) を受けます。前置デクリメント式の値は、新しい値が格納された後の変数の値です。
(「プリミティブ変換を狭める」という用語は、型キャストを指します...)
参照: JLS 15.15.1。
したがって++b
、byte
明示的なキャストは必要ありません。