++; —
● 分前缀与后缀两种情况
● 操作数为左值;前缀时返回左值;后缀时返回右值
#include <iostream>int main(){int x = 3;int y1 = x++;int y2 = ++x;std::cout << y1 << std::endl;std::cout << y2 << std::endl;std::cout << x << std::endl;}
355
#include <iostream>int main(){int x = 3;//(x++)++;x++返回右值,与操作数左值矛盾++(++x);std::cout << x << std::endl;}
5
● 建议使用前缀形式
special:
在不恰当的使用自增或自减时可能会出现一些未定义行为(undefined behavior)
#include <iostream>int main(){int x = 2;std::cout << (++x) * (++x) * (++x) << std::endl;}
80
在不同的编译器的编译下可能会给出不同的输出,在Visual Studio 2021 输出为125,在Clion 输出为80;此外,不同语言输出结果也不一样,在Java中的结果是60。因此,我们在编写程序时,应该避免这种未定义行为的发生!
