代码之家  ›  专栏  ›  技术社区  ›  sequel

当在单个输出语句中使用时,C++递增/递减操作符的行为不同[复制]

  •  0
  • sequel  · 技术社区  · 6 年前

    所以我有两个c++代码:

    第一个:

    int main()
    {
        int a=10, b=8;
    
        b=a;
        ++a;
        b++;
    
        cout<<a<<"\n"<<b<<"\n"<<--b<<"\n";
    
        return 0;
    }
    

    第二个:

    int main()
    {
        int a=10, b=8;
    
        b=a;
        ++a;
        b++;
    
        cout<<a<<"\n";
        cout<<b<<"\n";
        cout<<--b<<"\n";
    
        return 0;
    }
    

    它们各自的输出是:

    第一个输出:

    11
    10
    10
    

    第二个输出:

    11
    11
    10
    

    如你所知,如果我 cout 值使用一行,输出与输出不同,如果我 咳嗽 使用多行的值。

    有人能解释一下发生了什么事吗?

    谢谢。

    1 回复  |  直到 6 年前
        1
  •  -2
  •   Yadvendra Kumar    6 年前

    当你在一行中执行时,那么

    --b;
    

    首先对值进行评估,然后在两者中打印 (b和--b) .

    当你在新行中执行cout时,那么:

    --b; 
    

    最后对值进行了计算。