++; —
    ● 分前缀与后缀两种情况
    ● 操作数为左值;前缀时返回左值;后缀时返回右值

    1. #include <iostream>
    2. int main()
    3. {
    4. int x = 3;
    5. int y1 = x++;
    6. int y2 = ++x;
    7. std::cout << y1 << std::endl;
    8. std::cout << y2 << std::endl;
    9. std::cout << x << std::endl;
    10. }
    1. 3
    2. 5
    3. 5
    1. #include <iostream>
    2. int main()
    3. {
    4. int x = 3;
    5. //(x++)++;x++返回右值,与操作数左值矛盾
    6. ++(++x);
    7. std::cout << x << std::endl;
    8. }
    1. 5

    建议使用前缀形式

    special:
    在不恰当的使用自增或自减时可能会出现一些未定义行为(undefined behavior

    1. #include <iostream>
    2. int main()
    3. {
    4. int x = 2;
    5. std::cout << (++x) * (++x) * (++x) << std::endl;
    6. }
    1. 80

    在不同的编译器的编译下可能会给出不同的输出,在Visual Studio 2021 输出为125,在Clion 输出为80;此外,不同语言输出结果也不一样,在Java中的结果是60。因此,我们在编写程序时,应该避免这种未定义行为的发生!