黄建琼

摘要:自增自减运算符在C语言的编程过程中经常用到,具有重要的作用,而灵活使用自增自减运算符则是个难点。该文从几个例子入手,观察运行的结果,对结果进行分析,最后得出结论。以期能使初学者避重就轻,从而熟练掌握自增自减运算符。

关键词:C语言;自增自减运算符;表达式;函数

中图分类号:TP301文献标识码:A文章编号:1009-3044(2010)11-2631-02

Skillfully Apply the Autoincrement and Autodecrement Operators in the C Programming Language

HUANG Jian-qiong

(Fuzhou Technical College of Foreign Studies, Fuzhou 350018, China)

Abstract: Autoincrement and autodecrement operators in the C programming language frequently used process has an important role, while the flexible use of autoincrement and autodecrement operators is a difficult. In this paper, a few examples to start to observe the operation results, the results were analyzed, the final conclusion. With a view to enable the novice takes the easy way to master the autoincrement and autodecrement operators.

Key words: C programming language; increment and decrement operators; expression; function

C语言功能强大,使用灵活,是初学者的很好的入门语言。而C语言中规则繁多、运算符丰富,特别是含有自增自减运算符的同一个表达式在不同情况下具有不同的值,让许多初学者感到困难。本文以TURBO C为运行环境,从示例入手,由浅入深,巧析自增自减运算符的使用。

1 自增自减运算符的功能

自增自减运算符的符号分别为“++”和“--”,其作用是使变量的值增1或减1,它的操作方法又分为两种,即运算符在变量前和运算符在变量后,本文为了说明方便,统一用前自增(前自减)或后自增(后自减)来引用。

例1: ++i,i++(在使用之前,使i的值加1)

这里,++ i和i++的作用相当于i =i+1。但++ i和i++出现在表达式或语句中是有区别的。

例2:int i=3,j=3,m,n;

m=i++;(i的值赋给m,m的值为3,之后i加1,值为4)

n=++j; (j加1,值为4,4赋给n,n的值为4)

当“++”在后时,先使用i的值,再执行i=i+1;当“++”在前时,先执行j=j+1,再使用j的值。所以m和n的结果分别是3和4。

2 自增自减运算符在赋值表达式中的应用

例3:main()

{ int i=3,a;

a=(++i)+(i--)+i;

printf("a=%d,i=%d

",a,i);}

运行程序,输出结果为a=12,i=3。

分析:先计算++i,i的值变为4,右边三个i均取4, a的值为4+4+4=12,最后i减1变为3。

例4:main()

{ int i=3,a;

a=(++i)+(i--)+(++i)+i;

printf("a=%d,i=%d

",a,i);}

运行程序,输出结果为a=20,i=4。

分析:先计算两个++i,i的值变为5,右边四个i均取5, a的值为5+5+5+5=20,最后i减1变为4。

根据以上两个例子及众多的实验,在涉及自增自减的赋值表达式运算中,笔者总结出如下计算规律:1) 碰到前自增自减的情况时,先计算前自增自减表达式;2) 统一处理整个表达式,求解;3) 最后进行后自增自减运算。

例5:main()

{ int n=4,m;

m=(++n)+(--n)+(++n)+(++n)+(n--)+n;

printf("m=%d,n=%d

",m,n);}

运行程序,输出结果为m=36,n=5。

根据以上结论进行推导:1)计算(++n)、(--n)、(++n)和(++n),得出n=6;2)m=6+6+6+6+6+6,等于36;3)计算n--,n等于5。

例6:main()

{ i=3;

i=(++i)+(i--)+i;

printf("i=%d

",i);}

运行程序,输出结果为i=11。

根据以上结论推导:1)计算++i,得出i=4;2)i=4+4+4,等于12;3)计算i--,i等于11。

3 自增自减运算符在printf函数中的应用

例7:main()

{ int i=3;

printf("a=%d

", (++i)+(i--)+i);}

运行程序,输出结果为a=11。

观察例7和例3,例7是由例3修改而来的。在例3中,(++i)+(i--)+i是放在赋值表达式中,而例7中(++i)+(i--)+i是放在printf函数中作为参数,而结果却不一样。这说明自增自减运算符在赋值表达式和printf函数中的应用是不一样的。

分析:先计算++i,i的值变为4,表达式变为4+(i--)+i;接着前两项相加结果为8+i,i变为3;最后计算8+3,等于11。

例8:main()

{ int i=3;

printf("%d

", (i++)+(i++)+(i++));}

运行程序,输出结果12。

分析:先计算表达式,变为3+(i++)+(i++),i的值变为4;接着前两项相加,表达式变为3+4+(i++),即7+(i++),i的值变为5;最后计算整个表达式的值为7+5,等于12,i的值为6。

例9:main()

{int i=3;

printf("%d

", (++i)+( ++i)+( ++i));}

运行程序,输出结果a=15。

计算的过程和上例一样,按照自左向右的规则,i的值依次为4、5、6,表达式的值为4+5+6=15

由上例7~例9及大量的实验,可以归纳如下:当自增自减表达式作为printf函数的参数时,按自左向右的原则,依次计算得出结果。

例10:main()

{int i=3;

printf("%d

", (++i)+(i++)+( ++i));}

运行程序,输出结果14。

运用上述结论,不难推出i的结果为6,表达式的结果为4+4+6,即14。

4 小结

自增自减运算符在编程过程中经常用到,灵活的使用它,可以简化编程语句。而它在不同地方、不同编译环境下的实现过程不一,这就要求使用者在使用时要倍加小心。此外,对于初学者一定要勤学多问、多实践。

参考文献:

[1] 谭浩强.C程序设计[M].3版.北京:清华大学出版社,2005.

[2] 谭浩强,张基温.C语言程序设计教程[M].3版.北京:高等教育出版社,2006.

[3] 张莉.C程序设计教程[M].北京:电子工业出版社,2000.

c语言自增自减5运算符详解,巧用C语言中的自增自减运算符相关推荐

  1. 解释一下java的短路运算,Java短路运算符和非短路运算符详解

    Java短路运算符和非短路运算符详解 时间:2017-09-15     来源:互联网 你了解Java短路运算符和非短路运算符吗?短路运算符就是我们常用的"&&". ...

  2. C语言学习——运算符详解

    C语言学习--运算符详解 一.学习运算符 (1)运算对象的数目 C语言中,运算符的运算对象可以是一个,称单目运算符:运算对象也可以是两个,称双目运算符:运算对象还可以是三个,称三目运算符. (2)运算 ...

  3. java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区...

    java基础(2)--运算符详解 自增自减规则 自增自减就是常用的 a = a++ 或者 a = ++a;前者是后缀式,先把a赋值给a,再加一:后者是后缀式,先加一,在赋值给a;而且a++,++a并不 ...

  4. C语言结构体与指针ppt,c语言指针和结构体:链表详解.ppt

    c语言指针和结构体:链表详解.ppt 1,第十一章 链表,2,例跳马.依下图将每一步跳马之后的位置x,y放到一个"结点"里,再用"链子穿起来",形成一条链,相邻 ...

  5. JS运算符详解与优先级

    JS运算符详解与优先级 算术运算符 赋值运算符 一元运算符 比较运算符 逻辑运算符 运算符优先级 算术运算符 + 求和 - 求差 * 求积 / 求商 % 求余 取模 乘除取余优先级相同,加减优先级相同 ...

  6. mysql所支持的比较运算符_mysql比较运算符有哪些?Mysql比较运算符详解

    比较运算符可用于比较数字和字符串.今天发一篇Mysql比较运算符详解,希望对初学者有所帮助,虽然现在流行NoSQL,但是MYSQL还是很有用的,数字作为浮点值进行比较,字符串以不区为例进行比较,=运算 ...

  7. C语言位操作详解-4.2.C语言专题第二部分-朱有鹏-专题视频课程

    C语言位操作详解-4.2.C语言专题第二部分-11753人已学习 课程介绍         本课程的目标是让大家彻底掌握C语言中位运算符及常规技巧,这些知识在嵌入式代码中用的很多,尤其是设置寄存器以操 ...

  8. MySQL—运算符详解(算术、比较、逻辑、范围运算符与集合运算符 模糊查询 NULL值运算与null值判断 位运算符)

    MySQL--运算符详解 知识纲要 算术运算符 比较运算符 逻辑运算符 范围运算符与集合运算符 模糊查询 NULL值运算与null值判断 位运算符 1.算术运算符 加 减 乘 除 取余 div 也表示 ...

  9. python数组相减_对Python 中矩阵或者数组相减的法则详解

    对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...

最新文章

  1. 查看运行状态_查看 Linux 系统服务的 5 大方法
  2. mysql怎么引用别的文件_用source语句引用mysql文件的细节注意
  3. php7 str split,PHP7.4新特性预览
  4. J2EE开发时的包命名规则
  5. 使用IDEA,利用SpringMVC框架建立HelloWorld项目
  6. FW: Why PUT and DELETE?铪铪
  7. 如何为SharePoint文件添加标记
  8. 苹果应用商店反垄断案败诉,市值蒸发500多亿美元;脸书杠上了土耳其政府;Nutanix 扩展多云产品组合……...
  9. Java基础恶补——控制流、异常、断言
  10. safari浏览器关于时间日期格式的兼容问题
  11. 巨潮资讯网-多层次资本市场信息披露平台
  12. 俄罗斯决定退出国际空间站项目 马斯克:“一路顺风”
  13. excel表格打印每页都有表头_Excel打印表格不再手忙脚乱
  14. 村田 | 用于人机界面和生命体征检测的压电薄膜传感器
  15. 空气净化器对比测试PM2.5去除效果显著
  16. WHQL认证最新申请流程
  17. C#贪吃蛇小游戏 毕业设计用
  18. Linux下shell脚本的编写
  19. win10 安装并跑通 mmdetection
  20. c#获取公网的ip,本机ip 以及当前城市以及运营商

热门文章

  1. Apache Kafka 1.0.0正式发布!
  2. 《剑指offer》— JavaScript(6)旋转数组的最小数字
  3. Windows下Eclipse提交MR程序到HadoopCluster
  4. WPF中实现验证码功能
  5. img title属性值利用#13换行
  6. js中的错误missing ( before function parameter
  7. linux rc.d的作用,init.d,rc.d详解 Linux运行时详解
  8. 汉仪尚巍手书_汉仪尚巍手书免费版
  9. webgl 基础渲染demo_游戏引擎养成《二》 引入跨平台渲染库
  10. 华为服务器忘记管理密码怎么修改,忘记云服务器密码怎么修改