++; —
● 分前缀与后缀两种情况
● 操作数为左值;前缀时返回左值;后缀时返回右值
#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;
}
3
5
5
#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。因此,我们在编写程序时,应该避免这种未定义行为的发生!