1

私は次のコードを持っています:

public class Operators {
    public static void main(String[] args) {
        int i =+ 2;
        System.out.println(i);
    }
}

実行すると、次の出力が得られます: 2

では、=+オペレーターは実際にここで何をしますか?

編集:

一部の人が答えたように、次のコードを検討してください+2i

public class Operators {
    public static void main(String[] args) {
        int i =- -2;
        System.out.println(i);
    }
}

したがって、上記の場合、出力は になります-2。しかし、私は得ています2

したがって、それは-(-2)であり、 を与えると思います2そうですか?

4

6 に答える 6

11
int i =+ 2;

変数 i への正の 2(+2) 代入です。あなたの書き込みが --int i = +2;

もう1つの例 -

int i = 2;
i=+3;
System.out.println(i);

3 を出力します。

+ 単項プラス演算子。は正の値を示します (ただし、これがなくても数値は正です)

その他の例 - http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/java/nutsandbolts/examples/UnaryDemo.java

于 2013-10-03T05:27:44.697 に答える
5

言うと:

int i =+ 2;

+単項演算子として機能します。

詳しくはi、正の値に設定します2

編集:あなたの更新は言う:

int i =- -2;

は 2 を生成します。なぜですか?

この場合、それはi=-(-(2)). 単項マイナス演算子を使用する、値がたとえばInteger.MIN_VALUE.

于 2013-10-03T05:26:17.067 に答える
3

=+ の意味は本当に += だと思います。

あなたのコードは +2 (正の 2) の値を整数に割り当てています。

例えば:

int x =+ 4;
x =+ 8;
Console.WriteLine(x.ToString());
Console.ReadLine();

12 ではなく、"8" を出力します。これは、x を +4 に割り当ててから +8 に割り当てているためです。

+= の機能について質問している場合は、初期変数を取得してそれに追加するのが省略形です。

x += 8

と同じです

x = x + 8

前の例のフォーム =+ を += に変更すると、次のようになります。

int x = 4;
x += 8;
Console.WriteLine(x.ToString());
Console.ReadLine();

「12」と表示されます。

于 2013-10-03T05:36:05.110 に答える
1

単項演算子については、次の図を参照してください。

ここに画像の説明を入力

これを理解するための例を次に示します。

public class UnaryDemo {
    public static void main(String[] args) {
        int x = 10;
        int y = 20;

        int result = +x;

        System.out.println("+x = " + result);

        result = -y;

        System.out.println("-y = " + result);
        }
    }

そして出力は

+x = 10
-y = -20

したがって、演算子はvariable = +valueではなくと考えてvariable =+ valuesください。ええ、そのスペースは読みやすくなります。

于 2013-10-03T05:39:55.093 に答える
1

他のすべてが回答されているので、JLSリファレンスを提供したいと思います。
あなたの編集への回答

int i =- -2;

jlsで指定されているとおり

  • オペランドに対して単項数値昇格 (§5.6.1) が実行されます。
  • 単項マイナス式の型は、オペランドの昇格された型です。
  • 実行時の単項マイナス式の値は、オペランドの昇格された値の算術否定です。

そう、

System.out.println(i); //prints 2  

整数値の場合、否定はゼロからの減算と同じです。


ノート

浮動小数点値の場合、x が +0.0 の場合、0.0-x は +0.0 ですが、-x は -0.0 であるため、否定はゼロからの減算と同じではありません。

単項マイナスは、浮動小数点数の符号を反転するだけです。関心のある特別なケース:

  • オペランドが NaN の場合、結果は NaN になります。(NaN には符号がないことを思い出してください (§4.2.3)。)

  • オペランドが無限大の場合、結果は反対符号の無限大になります。

  • オペランドがゼロの場合、結果は反対符号のゼロになります。

便利なリンク

  1. 単項演算子
  2. 単項数値昇格
于 2013-10-03T05:54:55.050 に答える