我正在尝试遵循C代码。我认为该代码的输出应为0 0 00。但是执行后,输出为0 -1 -10。任何人都可以解释输出是如何产生的。
#include<iostream>
using namespace std;
int main()
{
int x=-1, y=-1, z=-1;
int w= ++x && ++y && ++z;
cout<<x<<" "<<y<<" "<<z<<" "<<w<<endl;
return 0;
}
答案 0 :(得分:3)
这是因为&&
运算符的短路行为。 ++x
评估为0
,将被视为false
。因此,将仅评估++x
,而不会评估其余表达式,并且表达式++x && ++y && ++z
的最终值为0
,并将其分配给w
。>