誰もが+-i
または-+i
のいずれかの場合には、この奇妙なJavaの動作
int i=2;
int j=+-i;//-+i;
にj=-2
の値を私に説明できます。
Javaでこれは問題ありませんか?これはコンパイラエラーであるべきですか?
ありがとうございます。
誰もが+-i
または-+i
のいずれかの場合には、この奇妙なJavaの動作
int i=2;
int j=+-i;//-+i;
にj=-2
の値を私に説明できます。
Javaでこれは問題ありませんか?これはコンパイラエラーであるべきですか?
ありがとうございます。
これはうまくいきました。あなたは単なる2つの単項演算子を持っています。だから、どちらかです:
int j = +(-i);
または
int j = -(+i);
は、これら二つの演算子のためにJLSのsections 15.15.3と15.15.4を参照してください。
これはまったく問題ありません。 Unary Operators in java
どちらの場合も同様ですが、どちらの場合も同様の結果が同じ順番で異なる順序で実行されます。
このように考える:int j = +i
はint j = i
に対応します。したがって、-+i
または+-i
は-i
となります。
あなたはi
に2単項演算子を適用している:
int j = +-i;
は-+i
ため
int j = +(-i);
と同様に相当します。 i
がInteger.MIN_VALUE
(この場合、j
はi
に等しくなります)に等しくない場合、結果はi
を否定するのと同じです。
ニースリンク:) +1 – mprabhat