-7

私はこの非常に単純なプログラムを書きました:

    #include <iostream>

using namespace std;

int main()
{
    int x = 0;

    cout << x++<<endl;
    cout<<++x<<endl;
    int y = 0;

    cout<<y--<<endl;
    cout<<--y<<endl;
    return 0;
}

これは私がそれを実行したときに私が得たものです:

0

2

0

-2

私はプログラムを書くためにcode::blocksを使用し、私のオペレーティングシステムはUbuntu12.10です。代わりに010 -1が表示されるように、プログラムを修正するにはどうすればよいですか?

4

4 に答える 4

4

ポストインクリメント(デクリメント)とプレインクリメント(デクリメント)の概念を理解する必要があります。

ポストインクリメント

cout << x++<<endl;

この行は、「xの値を返す」+「xの値をインクリメントする」と理解できます。つまり、戻り値は増分の前です。

したがって、0を返し、xの値を1に増やします。

事前インクリメント

cout<<++x<<endl;

これは逆で、増分値が返されます。

したがって、xの値を2に増やして、2を返します。

于 2013-01-25T08:22:43.663 に答える
2
cout << x++ << endl;

ポストインクリメントxは0から1にインクリメントし、古い値0を生成します。の値xは現在1です。

cout << ++x << endl;

プリインクリメントxは1から2にインクリメントし、新しい値2を生成します。の値はx2になります。

于 2013-01-25T08:26:06.793 に答える
1

x++変数は1になりますが、その時点でのafter ++の動作++xが2になるため、0として計算されます。

'for'ループ内のポストインクリメントとプレインクリメントは同じ出力を生成します

于 2013-01-25T08:24:19.637 に答える
1

X ++は最初にそれを出力し、次に値をインクリメントします。++ Xは最初に値をインクリメントし、次にそれを出力します。

それで、

cout<<x++<<endl   // Prints '0' and increments to '1'
cout<<++x<<endl   // Increments '1' to '2' and prints it
于 2013-01-25T08:25:41.647 に答える