3

以下は、C での私のコード スニペットです。

void main(){
 int x = 7;
 x = x++;
 printf("%d",x);
}

出力: 8

public static void main(String[] args){

        int x = 7;

        x =  x++;
        System.out.println(x);
    }

出力 : 7

両方の言語が異なる出力を与える理由がわかりません。以下のリンクを参照 しました「x = x++」の後のxとは何ですか?

4

3 に答える 3

2

x++ 以降の Java では、の値に変更はありません。x

x = x++; に等しい

int i= x;
x = x + 1;
x = i;

だからx と同じまま

ここから詳細を読むことができます:Why are these constructs (using ++) undefined behavior?

于 2013-08-01T11:44:58.777 に答える
0

2 番目の例では、代入は最初に x の値を保存し、次に x をその値に 1 を加えた値に設定し、最後に x を元の値にリセットします。すこし:

int temp=x;
x=x+1;
x=temp;
于 2013-08-01T11:46:20.103 に答える