首页 > 解决方案 > 为什么具有逻辑和运算符和增量运算符的 c++ 程序给出的输出与预期不同?

问题描述

我正在尝试遵循 C 代码。我认为这段代码的输出应该是 0 0 0 0。但执行后输出为 0 -1 -1 0。任何人都可以解释输出是如何产生的。

    #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;
    }

标签: c++operators

解决方案


这是因为操作员的短路行为&&++x评估到0将被视为false. 因此, only++x将被评估,其余表达式将不会被评估,并且表达式的最终值++x && ++y && ++z0被分配给w.


推荐阅读