参加一个简介c ++课程,今天的教授正在谈论循环,增量和减量。所以我们正在检查一个简单的do-while循环运行多少次,我注意到在输出以下代码时,int y
首先显示为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语句向控制台显示信息之前执行的 但寻找更准确的答案/解释
答案 0 :(得分:1)
++ y在int y的引用传递给operator<<(std::ostream&, const int&)
之前递增并指定y的新值,并且y ++增量并在operator<<(std::ostream&,const int&)
返回后指定y
所以,你第一次打印2,因为y = 1被传递给opertator&lt;&lt;调用y ++打印2,并在调用运算符&lt;&lt; y被分配2。
对运营商的第二次调用&lt;&lt;在y上将y设置为2,在将引用传递给运算符&lt;&lt;之前调用++ y而y是3。