为什么带有逻辑和运算符以及增量运算符的c ++程序给出的输出与预期的不同?

时间:2018-08-15 18:19:15

标签: c++ operators

我正在尝试遵循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;
    }

1 个答案:

答案 0 :(得分:3)

这是因为&&运算符的短路行为。 ++x评估为0,将被视为false。因此,将仅评估++x,而不会评估其余表达式,并且表达式++x && ++y && ++z的最终值为0,并将其分配给w