2.3 C语言自增(++)和自减(--)

最近遇到很多同学问我++a和a++有啥区别,这节正好讲到,所以给大家详细讲解一下,看完相信你就不会有疑问了!

一个整数类型的变量自身加 1 可以这样写:

a = a + 1;

或者

a += 1; //相当于a = a + 1;

不过,C语言还支持另外一种更加简洁的写法,就是:

a++;

或者

++a;

这种写法叫做自加或自增,意思很明确,就是每次自身加 1。

相应的,也有a--和--a,它们叫做自减,表示自身减 1。

++和--分别称为自增运算符和自减运算符,它们在循环结构(后续章节会讲解)中使用很频繁。

自增和自减的示例:

2.3 C语言自增(++)和自减(--)

小编是一个有着6年工作经验的工程师,关于C++编程,自己有做材料的整合,一个完整的C++编程学习路线,学习资料和工具,能够进我的Q群10048,-83029收取,免费送给大家,希望你也能凭着自己的努力,成为下一个优秀的程序员

2.3 C语言自增(++)和自减(--)

这样看起来没问题,就是自己减一,加一没毛病,再来看一个

2.3 C语言自增(++)和自减(--)

2.3 C语言自增(++)和自减(--)

什么情况,不是说好自加的吗?注意这个++在变量后面,就是后++,后++会让变量先进行别的操作,然后自己加一。下面的代码说明了,第一次输出a++,实际上是先输出a,然后再自己加一,所以第二次输出就变成11了!

2.3 C语言自增(++)和自减(--)

前++是什么情况呢

2.3 C语言自增(++)和自减(--)

发现没有,前++就是先自加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。

相关推荐