2012-03-11 9 views

答えて

16

あなたがしていることは、型キャストを単項演算子と組み合わせることです。

それでは見てみましょう:

まず、あなたがタイプlongにキャスト値-1を、持っています。

次に、単精度演算+を実行します。これは値を変更しないため、まだ(long) -1です。

次に、それをintにキャストして、int -1になりました。次に、単項演算子-を使用するので、-(-1)があり、1です。

次に、それをcharにキャストします。したがって、char 1があります。次に、単項演算子+を使用するので、まだ1があります。

最後に、値はbyteにキャストされるので、byte 1になります。そしてそれは再び(暗黙のうちに)intにキャストされます。

5

様々な(<type>)部品だけで、様々なタイプ間のキャストされています。その後、割り当て中intにキャストします>(byte)1 - >-1 - - >(long)-1 - >(int)-1 - >-(int)-1 = 1 - >(char)1)それでは、右1からの読み取り、されるが起こります。型キャストは値の効果的な変更をもたらさないので、最初の行全体はint i = 1;に相当します。

2

これは右から左に移動します。 -1は長くキャストされます。 +プレフィックスが適用され(効果はありません)、intにキャストされます。次に、 - 適用され(1に変更)、charにキャストされます。最後に、+プレフィックスが適用されます(それでも効果はありません)。これはバイトにキャストされます。

0

括弧を追加することができます:

int i = ((byte) + ((char) - ((int) + ((long) (- 1))))); 
System.out.println(i); 

は、基本的には、これは単なるキャストと単項演算子のシリーズです(+は何も、-ネゲートしません)

完全なプログラムの流れはluiscubalの答え

であります
関連する問題