# 自增与自减
在C语言汇总的运算中有 a++, ++a, a--,--b 四种不同的递增和递减的方式。下面就这四种使用场景分别说明。
这个操作符放在前面与放在后面的区别主要是:
## a++, b-- 操作符放后面
看下面的代码
# include <stdio.h> int main() { int a=10,b=0; b = a++; printf("a = %d, b = %d \n",a,b) return 0; }
上面的代码定义了 a的值为10,b的值为0;
关键是看`c=a++` 这段代码,这段代码主要是将 a的值递增并赋值给b变量。
现在的问题就是 是先把a的值赋给b,还是a递增之后的值给b?
我们执行代码可以看到结果。
b的值为10,说明 先赋值给b,然后再递增。
同理b--的代码可以推断,应该也是赋值,然后才递减。
# include <stdio.h> int main() { int a=10,b=0; b = a--; printf("a = %d, b = %d \n",a,b); return 0; }
所以结果为 a = 9 b=10
## ++a,--a 操作符放在前面
根据上面 a++ 操作符放在后面的结果来推断
++a 格式的操作 应该是 先递增再赋值。
我们可以写段代码来看下
# include <stdio.h> int main() { int a=10,b=0; b = ++a; printf("a = %d, b = %d \n",a,b); return 0; }
所以上面的代码 a的值递增后变成11, 然后将值赋给b,b的值也为11。
同理, --a也是一样。
如下面代码
# include <stdio.h> int main() { int a=10,b=0; b = --a; printf("a = %d, b = %d \n",a,b); return 0; }
a = 9 b=9
# 总结
- 符号放在前面 即b = ++a ,执行的时候先进行递增,再进行赋值,所以运算之后的值 a和b都一样。
- 符号放在后面 即b= a++, 执行的时候先进行赋值,再进行赋值,所以运算之后 a的值比b多1。