0

Javaでは、次のコードスニペットがあるとします

byte b = 127;
b=-b ;//(which require a cast due to numeric promotion)
b=++b; //does not require cast
4

1 に答える 1

1

のJLS仕様に++は次のように書かれています:

前置インクリメント式の型は、変数の型です。

.... 加算の前に、値 1 と変数の値に対してバイナリ数値昇格 (§5.6.2) が実行されます。必要に応じて、合計は縮小プリミティブ変換 (§5.1.3) によって縮小されるか、格納される前に変数の型へのボックス化変換 (§5.1.7) を受けます。前置デクリメント式の値は、新しい値が格納された後の変数の値です。

(「プリミティブ変換を狭める」という用語は、型キャストを指します...)

参照: JLS 15.15.1

したがって++bbyte明示的なキャストは必要ありません。

于 2015-02-07T05:35:12.863 に答える