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

  • 本文关键字: 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?

您需要了解后递增(递减)和前递增(递减)的概念。

员额增量

cout << x++<<endl;

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

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

预递增

cout<<++x<<endl;

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

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

cout << x++ << endl;

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

cout << ++x << endl;
预递增

从 1 递增到 2 x,并生成值 2。x的值现在为 2。

x++ 会使你的变量为 1,但由于 after++ 行为,到那时++x 将是 2

"for"循环中的后递增和预递增产生相同的输出

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

所以

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

相关内容

  • 没有找到相关文章

最新更新