C++ 自增自减运算符
自增运算符 ++
会把操作数加 1,自减运算符 --
会把操作数减 1
所以
a++
等同于
a = a +1;
同样的
a--;
等同于
a = a-1;
无论是自增运算符还是自减运算符,都可以放在操作数的前面 (前缀) 或后面 (后缀)
x = x+1;
可以写成:
++x; // 前缀形式
或者
x++; // 后缀形式
但如果把自增的结果赋值给另一个变量,则前缀形式与后缀形式之间有一点不同
- 前缀形式,则会在表达式计算之前完成自增或自减
- 后缀形式,则会在表达式计算之后完成自增或自减
所以
int x = a++; int y = b--;
等同于
int x = a; a = a-1; int y = b; b = b-1;
而
int x = ++a; int y = --b
等同于
a = a+1; int x = a; b = b+1; int y = b;
我们写一个范例来演示下这种区别
#include <iostream> int main() { int a = 21; int c ; // a 的值在赋值之前不会自增 c = a++; std::cout << "do c = a++; c is: " << c << std::endl ; // 表达式计算之后,a 的值增加 1 std::cout << "a is :" << a << std::endl ; // a 的值在赋值之前自增 c = ++a; std::cout << "do c = ++a; c is :" << c << std::endl ; // 表达式计算之后,a 的值增加 1 std::cout << "a is :" << a << std::endl ; return 0; }
编译和运行以上范例,输出结果如下:
do c = a++; c is: 21 a is :22 do c = ++a; c is :23 a is :23