2011-12-07 37 views
0

誰もが+-iまたは-+iのいずれかの場合には、この奇妙なJavaの動作

int i=2; 
int j=+-i;//-+i; 

j=-2の値を私に説明できます。

Javaでこれは問題ありませんか?これはコンパイラエラーであるべきですか?

ありがとうございます。

答えて

11

これはうまくいきました。あなたは単なる2つの単項演算子を持っています。だから、どちらかです:

int j = +(-i); 

または

int j = -(+i); 

は、これら二つの演算子のためにJLSのsections 15.15.315.15.4を参照してください。

+0

ニースリンク:) +1 – mprabhat

2

これはまったく問題ありません。 Unary Operators in java

どちらの場合も同様ですが、どちらの場合も同様の結果が同じ順番で異なる順序で実行されます。

2

このように考える:int j = +iint j = iに対応します。したがって、-+iまたは+-i-iとなります。

2

あなたはiに2単項演算子を適用している:

int j = +-i; 

-+iため

int j = +(-i); 

と同様に相当します。 iInteger.MIN_VALUE(この場合、jiに等しくなります)に等しくない場合、結果はiを否定するのと同じです。