2

参加 c++ 入门课程,今天的教授正在谈论循环、增量和减量。所以我们正在检查一个简单的do-while循环会运行多少次,我注意到在以下代码的输出过程中,int y首先显示为a 2,但是首先使用增量的后缀符号,并且根据我的教授,也有优先权(如x显示的变量)。那么为什么不在输出窗口中y首先显示为:“ 1 3 ”?

可能是一个很简单的答案,但他并不立即知道,并要求我们看看我们是否可以找到。我们使用的是 dev c++ 的最新版本。

#include <iostream>
using namespace std;

int main()
{
    int x=1;
    int y=1;

    do
    {
        cout << "x: " << " " << ++x << " " << x++ << endl;
        cout << "y: " << " " << y++ << " " << ++y << endl;
    }while(x<=10);

    return 0;
}

如果你运行它,显示将如下所示:

x:  3 1
y:  2 3
x:  5 3
y:  4 5
x:  7 5
y:  6 7
x:  9 7
y:  8 9
x:  11 9
y:  10 11

由于我的理解有限,我想出了这个:由于在同一语句中使用了多个增量操作,它们都在 cout 语句将信息显示到控制台之前执行。
但寻找可能更准确的答案/解释

4

1 回答 1

1

++y 在将 int y 的引用传递给之前递增并分配 y 的新值,operator<<(std::ostream&, const int&)并且 y++ 在operator<<(std::ostream&,const int&)返回后递增并分配 y

因此,您第一次打印 2,因为 y=1 被传递给 operator<< y++ 被调用以打印 2,并且在调用 operator<< y 之后被分配 2。

在 y 上对 operator<< 的第二次调用将 y 设置为 2,在将引用传递给 operator<< 之前调用 ++y 并且 y 为 3。

于 2013-03-01T03:27:33.953 回答