为什么2和-2而不是1和-1?

时间:2013-01-25 08:21:51

标签: c++ increment decrement

我写了这个非常简单的程序:

    #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编写程序,我的操作系统是Ubuntu 12.10。 我应该如何修复我的程序,所以我会看到0 1 0 -1而不是?

4 个答案:

答案 0 :(得分:4)

您需要了解concepts of post increment(decrement) and pre increment(decrement)

增加后

cout << x++<<endl;

您可以将此行理解为“返回x的值”+“增加x的值”。即返回值在增量之前。

因此返回0并将x的值增加到1。

预增量

cout<<++x<<endl;

这是相反的 - 返回递增的值。

因此将x的值增加到2并返回2.

答案 1 :(得分:2)

cout << x++ << endl;

增量后递增x从0到1,并产生值,0。x的值现在为1.

cout << ++x << endl;

预增量从{1}增加x,并产生值,2。x的值现在为2.

答案 2 :(得分:1)

x++会使您的变量为1,但由于当时++x之后的行为属于2

,因此计为0

Post-increment and pre-increment within a 'for' loop produce same output

答案 3 :(得分:1)

X ++首先打印它,然后递增值。 ++ X首先递增该值然后打印它。

所以,

cout<<x++<<endl   // Prints '0' and increments to '1'
cout<<++x<<endl   // Increments '1' to '2' and prints it