我正在解决 C++ 多项选择题。我无法理解以下代码的输出::
#include <iostream>
using namespace std;
int main()
{
int x,y,z;
x=y=z=1;
z=++x || ++y && ++z;
cout<<x<<" "<<y<<" "<<z<<endl;
system("pause");
return 0;
}
我正在通过以下方式解决这个问题::优先顺序::
Precedence "++" greaterthan Precedence "&&" greaterthan Precedence "||"
此外,一元++的关联性是“从右到左”。所以
z=(++x)||(++y) && (2)
z=(++x)||(2)&& (2)
z=(2)||(2)&&(2)
z=(2)|| 1 //As 2 && 2 is 1(true)
z=1 // As 2 || 1 is 1(true)
所以在我看来,正确的输出应该是 x=2,y=2 和 z=1。
但是当我在编译器中运行此代码时,编译器输出为 x=2,y=1,z=1。
为什么我得到这样的输出以及我在哪里犯了错误?
谢谢!