我不理解这个程序的输出:
如果首先评估
#include<iostream>
using namespace std;
int main()
{
int x = 1 , y = 1, z = 1;
cout << ( ++x || ++y && ++z ) << endl; //outputs 1;
cout << x << " " << y << " " << z ; //x = 2 , y = 1 , z = 1;
return 0;
}
输出:
1
2 1 1
如果首先评估
||
,则此输出没有问题。但是,此文章指出&&
的优先级高于||
,因此必须首先对其进行评估。 如果是这样,则根据我的理解,输出应为:1
1 2 2
++y && ++z
会被评估为 true
,因此不会评估 ++x
。