C语言自增(++)和自减(--)实例详解

所属分类: 软件编程 / C 语言 阅读数: 51
收藏 0 赞 0 分享

一个整数自身加一可以这样写:

a+=1;

它等价于a=a+1;。

但是在C语言中还有一种更简单的写法,就是a++;或者++a;。这种写法叫做自加或自增;意思很明确,就是自身加一。

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

++和--分别称为自增和自减运算符。

自增和自减的示例:

#include <stdio.h>
#include <stdlib.h>
int main()
{
 int a = 10, b = 20;
 printf("a=%d, b=%d\n", a, b);
 ++a;
 --b;
 printf("a=%d, b=%d\n", a, b);
 a++;
 b--;
 printf("a=%d, b=%d\n", a, b);
 system("pause");
 return 0;
}

运行结果:

a=10, b=20

a=11, b=19

a=12, b=18

自增自减完成后,会用新值替换旧值,并将新值保存在当前变量中。自增自减只能针对变量,不能针对数字,例如10++是错误

的。

值得注意的是,++ 在变量前面和后面是有区别的:

++ 在前面叫做前自增(例如 ++a)。前自增先进行自增操作,再进行其他操作。

++ 在后面叫做后自增(例如 a++)。后自增先进行其他操作,再进行自增操作。

自减(--)也一样,有前自减和后自减之分。

请看下面的例子:

#include <stdio.h>
#include <stdlib.h>
int main()
{
 int a=10, a1=++a;
 int b=20, b1=b++;
 int c=30, c1=--c;
 int d=40, d1=d--;
 printf("a=%d, a1=%d\n", a, a1);
 printf("b=%d, b1=%d\n", b, b1);
 printf("c=%d, c1=%d\n", c, c1);
 printf("d=%d, d1=%d\n", d, d1);
 system("pause");
 return 0;
}

 输出结果:

a=11, a1=11

b=21, b1=20

c=29, c1=29

d=39, d1=40

 a、b、c、d 的输出结果相信大家没有疑问,下面重点分析a1、b1、c1、d1:

1) 对于a1=++a,先执行++a,结果为11,再将11赋值给a1,所以a1的最终值为11。而a经过自增,最终的值也为11。

2) 对于b1=b++,b的值并不会立马加1,而是先把b原来的值交给b1,然后再加1。b原来的值为20,所以b1的值也就为20。而b

经过自增,最终值为21。

3) 对于c1=--c,先执行--c,结果为29,再将29赋值给c1,所以c1的最终值为29。而c经过自减,最终的值也为29。

4) 对于d1=d--,d的值并不会立马减1,而是先把d原来的值交给d1,然后再减1。d原来的值为40,所以d1的值也就为40。而d经

过自减,最终值为39。

可以看出:a1=++a;会先进行自增操作,再进行赋值操作;而b1=b++;会先进行赋值操作,再进行自增操作。c1=--c;和d1=d--;也

是如此。

自增自减非常方便,后续编程中会经常用到,大家要注意区分。

为了强化记忆,我们再来看一个自增自减的综合示例:

#include <stdio.h>
#include <stdlib.h>
int main()
{
 int a=12;
 int b=1;
 int c=a-(b--); // ①
 int d=(++a)-(--b); // ②
 printf("c=%d, d=%d\n", c, d);
 system("pause");
 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。

 以上就是对C语言的自增自减知识的介绍,希望对你学习这块知识有所帮助!

更多精彩内容其他人还在看

利用C语言来求最大连续子序列乘积的方法

这篇文章主要介绍了利用C语言来求最大连续子序列乘积的方法,基本的思路以外文中还附有相关ACM题目,需要的朋友可以参考下
收藏 0 赞 0 分享

用C语言判断一个二叉树是否为另一个的子结构

这篇文章主要介绍了用C语言判断一个二叉树是否为另一个的子结构,是数据结构学习当中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现的阶乘,排列和组合实例

这篇文章主要介绍了C语言实现的阶乘,排列和组合的方法,涉及C语言数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言查找数组里数字重复次数的方法

这篇文章主要介绍了C语言查找数组里数字重复次数的方法,涉及C语言针对数组的遍历与判断技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言简单实现计算字符个数的方法

这篇文章主要介绍了C语言简单实现计算字符个数的方法,涉及C语言针对字符串的简单遍历与判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

c实现linux下的数据库备份

本文给大家简单介绍下c实现linux下的数据库备份的方法和具体的源码,十分的实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

C++获得文件状态信息的方法

这篇文章主要介绍了C++获得文件状态信息的方法,包括文件状态信息、文件所在磁盘盘符、文件创建时间、访问时间及修改日期等,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言按关键字搜索文件夹中文件的方法

这篇文章主要介绍了C语言按关键字搜索文件夹中文件的方法,涉及C语言文件操作及字符串查找的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言之字符串模糊查询方法的实现

本篇文章主要为大家介绍字符串模糊查询的C语言程序编写方法,有需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现BMP转换JPG的方法

这篇文章主要介绍了C语言实现BMP转换JPG的方法,涉及C#图片格式转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多