私は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 "||"
また、unary++の結合法則は「右から左」です。それで
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になります。
なぜ私はそのような出力を取得し、どこで間違いを犯しているのですか?
ありがとう!