1
public class F {
    int test(int e) {
        System.out.println("ok");
        return e;
    }

    public static void main(String[] args) {
        int y = 8;
        F f = new F();
        int i = f.test(y++);
        System.out.println(i);
    }
}

このプログラムの出力は8、私が期待するものです。

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

このプログラムの出力は です9。これは驚くべきことです。なぜ、両方のプログラムで同じ値と同じインクリメント演算子を使用して異なる値を取得しているのでしょうか?

4

4 に答える 4

5

y++ポストインクリメント。つまり、式が評価された後にインクリメントされます。

走るとき

i=f.test(y++)

この場合、テスト メソッドに渡される値は、インクリメントが行われる前の値です。

他のコードサンプルi++では、​​それ自体が評価されるため、インクリメントはprintlnの前に行われます。

最初のサンプルのコードを に変更する++yと、9 になるはずです。

于 2013-06-10T15:27:55.370 に答える
1

i++ポストインクリメント演算子です。つまり、現在の i の値に評価され、使用にインクリメントされます。

私は期待するだろう

int i = 8
System.out.println(i++);
System.out.println(i);

印刷8します9

プレインクリメント++iを意味していたかもしれません

于 2013-06-10T15:28:29.447 に答える
0

y++ はポストインクリメントです。

値を渡してからインクリメントします。したがって、インクリメントする前に前の値を取得しています。

2 番目のケースでは、インクリメントされた値を出力しています。

于 2013-06-10T15:28:46.003 に答える