我无法理解这个程序的输出:
#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
as++y && ++z
将评估为true
,因此++x
不会被评估。