所以这个问题基本上是猜测输出程序。 我会具体的。
我理解的是x
的价值是通过引用y
传递的,这意味着我们对x
所做的任何更改都会反映在y
上,反之亦然。在第6行中,我们通过引用传递x
到y
的值。
在第7行中,x
会增加,因此x
变为11,y
也是如此。现在我希望输出为11 11
,因为我们首先打印x
,因此将打印出{11}的x
,并且从y
开始,它是后期增量因此将首先打印11,然后仅增加y
。但我错了(显而易见)答案是12 11
。
我尝试过调试,并没有解释为什么会这样。经过一些谷歌搜索后,我发现有一个名为cout
的规则,其中cout
语句的执行从右到左发生,这意味着在第8行,由于后期增量y
首先打印,然后递增以使x
变为并变为12.但在这种情况下,输出再次是11 12
而不是12 11
。请你解释一下cout
规则是否真的如此,如果是,你可以解释它是如何真正完成的,或者还有什么其他内容可以解决这个问题?感谢。
#include <iostream>
using namespace std;
int main()
{
int x = 10;
int &y = x; // line 6
x++; // line 7
cout<< x << " " << y++; // line 8
return 0;
}
答案 0 :(得分:0)
有些编制者会打印 11 11
而其他人会打印 12 11
标准没有定义案例中的顺序。
我仍然不明白你为什么使用这个参考?它没有改变任何东西,它就像下面这样:
#include<iostream>
using namespace std;
int main()
{
int x = 10;
x++;
cout<< x << " " << x++;
return 0;
}