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

 更新时间:2016年07月16日 09:29:00   投稿:lqh  
本篇文章主要介绍了C语言的自增和自减的基本知识,并附有代码示例,以便大家理解,有需要的朋友可以看下

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

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语言中的函数指针和左右法则

    这篇文章主要介绍了深入学习C语言中的函数指针和左右法则,左右法则是一种常用的C指针声明,需要的朋友可以参考下
    2015-08-08
  • C语言struct结构体介绍

    C语言struct结构体介绍

    C语言中,结构体类型属于一种构造类型(其他的构造类型还有:数组类型,联合类型),下面这篇文章主要给大家介绍了关于C语言结构体(struct)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 如何将C++源程序改写为C语言

    如何将C++源程序改写为C语言

    C++中主要的与C的区别最大而且最常用的特性及修改方法,接下来我们一起来学习他们吧
    2021-08-08
  • C语言详细讲解while语句的用法

    C语言详细讲解while语句的用法

    c语言while语句的使用语法如“while(condition) {statement(s);}”,该语句可以是单个语句,也可以是一个语句块,其条件可以是任意表达式,true是任意非零值,当条件为真时,循环进行迭代
    2022-05-05
  • C++使用GDAL库实现Tiff文件的读取

    C++使用GDAL库实现Tiff文件的读取

    这篇文章主要为大家详细介绍了C++使用GDAL库实现Tiff文件的读取的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03
  • C语言堆与二叉树的顺序结构与实现

    C语言堆与二叉树的顺序结构与实现

    堆是计算机科学中一类特殊的数据结构的统称,通常是一个可以被看做一棵完全二叉树的数组对象。而堆排序是利用堆这种数据结构所设计的一种排序算法。本文将详细介绍堆与二叉树的顺序结构与实现,需要的可以参考一下
    2022-05-05
  • VS Code 中安装运行、编写C语言程序的详细教程

    VS Code 中安装运行、编写C语言程序的详细教程

    这篇文章主要介绍了VS Code 中安装运行、编写C语言程序的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • C语言猜凶手的代码实现

    C语言猜凶手的代码实现

    本文主要介绍了C语言猜凶手的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • C++概念重载、覆盖、隐藏的使用说明

    C++概念重载、覆盖、隐藏的使用说明

    本篇文章介绍了,在C++中概念重载、覆盖、隐藏的使用分析说明。需要的朋友参考下
    2013-05-05
  • C语言实现顺序表的插入删除

    C语言实现顺序表的插入删除

    这篇文章主要介绍了C语言实现顺序表的插入删除,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05

最新评论