2.3 C语言自增(++)和自减(--)
最近遇到很多同学问我++a和a++有啥区别,这节正好讲到,所以给大家详细讲解一下,看完相信你就不会有疑问了!
一个整数类型的变量自身加 1 可以这样写:
a = a + 1;
或者
a += 1; //相当于a = a + 1;
不过,C语言还支持另外一种更加简洁的写法,就是:
a++;
或者
++a;
这种写法叫做自加或自增,意思很明确,就是每次自身加 1。
相应的,也有a--和--a,它们叫做自减,表示自身减 1。
++和--分别称为自增运算符和自减运算符,它们在循环结构(后续章节会讲解)中使用很频繁。
自增和自减的示例:
小编是一个有着6年工作经验的工程师,关于C++编程,自己有做材料的整合,一个完整的C++编程学习路线,学习资料和工具,能够进我的Q群10048,-83029收取,免费送给大家,希望你也能凭着自己的努力,成为下一个优秀的程序员
这样看起来没问题,就是自己减一,加一没毛病,再来看一个
什么情况,不是说好自加的吗?注意这个++在变量后面,就是后++,后++会让变量先进行别的操作,然后自己加一。下面的代码说明了,第一次输出a++,实际上是先输出a,然后再自己加一,所以第二次输出就变成11了!
前++是什么情况呢
发现没有,前++就是先自加1,然后再输出的!
自增自减完成后,会用新值替换旧值,将新值保存在当前变量中。
自增自减的结果必须得有变量来接收,所以自增自减只能针对变量,不能针对数字,例如10++就是错误的。
需要重点说明的是,++ 在变量前面和后面是有区别的:
- ++ 在前面叫做前自增(例如 ++a)。前自增先进行自增运算,再进行其他操作。
- ++ 在后面叫做后自增(例如 a++)。后自增先进行其他操作,再进行自增运算。
自减(--)也一样,有前自减和后自减之分,和自增(++)一样。
为了强化记忆,我们来看一个自增自减的综合示例:
#include <stdio.h> int main() { int a = 12, b = 1; int c = a - (b--); // ① int d = (++a) - (--b); // ② printf("c=%d, d=%d ", c, d); return 0; }
输出结果:
c=11, d=14
我们来分析一下:
1) 执行语句①时,因为是后自减,会先进行a-b运算,结果是 11,然后 b 再自减,就变成了 0;最后再将a-b的结果(也就是11)交给 c,所以 c 的值是 11。
2) 执行语句②之前,b 的值已经变成 0。对于d=(++a)-(--b),a 会先自增,变成 13,然后 b 再自减,变成 -1,最后再计算13-(-1),结果是 14,交给 d,所以 d 最终是 14。