C语言的自增,自减运算符探析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13
科技资讯 S CI EN CE & T EC HNO LO GY I NF OR MA TI ON 信 息 技 术C 语言中的运算符非常丰富,应用范
围也很广,可完成C 语言中的除了控制语
句和输入输出以外的几乎所有的基本操
作,灵活使用各种运算符可以实现在其
它高级语言中难以实现的运算。
在这些
运算符中,最难理解、最易出错也最为灵
活的便是自增/自减运算符。
下面是笔者
在教学过程中归纳总结的自增、自减运
算符的具体应用,并结合运算符优先级
和其本身的特点,对W I N -T C 环境下的
自增、自减运算符的功能与运算规则加
以分析说明。
1 自增与自减运算符的特点及运算规则
1.1特点
自增与自减运算符均是单目运算符,
即对一个运算对象施加运算,运算结果仍
赋予该对象。
使单个变量的值增加1的运算
符称为自增运算符,用“++”表示。
使单个
变量的值减1的运算符称为自减运算符,用
“--”表示。
自增、自减运算符只能用于变
量,不能用于常量和表达式,像2++和--
(a+b)等都是非法的。
1.2运算规则
自增、自减运算符的结合方向是“自右
向左”,每种运算符都有两种用法:(1)前置
运算──运算符放在变量之前:
运算式为:++变量、--变量
先使变量的值增(或减)1,然后再以变
化后的值参与其它运算,即先增减、后运
算。
例如:j =++i ,其中i =2,先计算
i =i +1=3,后赋值j =3,所以结果是i =3,
j=3。
(2)后置运算──运算符放在变量之后。
运算式为:变量++、变量--
变量先参与其它运算,然后再使变量
的值增(或减)1,即先运算、后增减。
例如:
j=i++,其中i的初值还是2,但此时是先赋值
j=i,后计算i=i+1=2+1=3,
所以结果是i =3,j =2。
因此j =++i 和
j=i++两式中j的结果是不同的,前者j=3,后
者j=2。
2 自增与自减运算符的应用2.1在赋值表达式中的应用关于自增、自减运算符的运算规则可以理解为:在赋值语句中,自增、自减运算符若作为前置式,其运算优先级高于其它算术运算,即先按照“从右至左”的结合性进行自增、自减运算,再进行其它运算;若作为后置式,其运算优先级低于其它算术运算,即先进行其它算术运算,再按照“从右至左”的结合性进行自增、自减运算。
假设有这样的一个程序段,每条语句在执行完毕后各变量的值写在其后的注释中。
int a=3,b=6,i;i=a++;/* i=3,a=4 */i=--a;/* i=3,a=3 */i=b--;/* i=6,b=5 */i=++b;/* i=6,a=6 */从以上的变化过程中可以看出:第1条语句执行的过程是:先把a的值赋给i,再将a 中的值自增一个;故而i得到了a自增前的值3;a自增1后变成了4;第2条语句执行的过程是:先把a的值自减了1,由4变成了3,再将3赋给变量i;第3条语句和第4条语句同1,2条语句执行的道理是一样的。
因此,++/--运算符用在赋值语句中时前置和后置所表示的含义是截然不同的。
2.2在循环语句中的应用C语言提供了3种循环结构:while结构、do-while结构和for结构。
在while结构和do-while结构的循环体中,应该有使循环趋向于结束的语句,这样的语句一般由赋值语句来实现,例如用i++或i--,其中i称为循环变量,在循环结构中只有改变循环变量的值,这样在循环体执行若干次之后,才能使循环条件不满足,结束循环。
如果无此语句,则i 的值始终不变,程序陷入死循环。
在for结构中,for语句最简单的应用形式也可理解为如下形式:for(循环变量赋初值;循环条件;循环变量增值){循环体语句;}。
其中,循环变量增值语句一般应用包含自增(自减)运算符的表达式来实现。
使用
原理同while结构和do-while结构。
例如:for(i=1;i<=500;i++) sum=sum+i;该语句完成1+2+3+……+500的功能。
当然在循环结构中使用自增(自减)运算符,只有在步长增1或减1的情况下使用,在其它情况下,还应使用赋值表达式来完成改变循环变量值的功能。
2.3在指针中的应用假设指针变量p指向数组a(即p=a),则p++,使指针指向下一元素,即a[1],若再执行*p,取出下一个元素a[1]的值。
将++和--运算符用于指针变量十分有效,可以使指针变量自动向前或向后移动,指向下一个或上一个数组元素。
例如:若想输出a 数组42个元素,程序如下:p=a;while (p<a+100)printf(“%d”,*p++);这个例子中的*p++等同于*(p++),而不同于(*p)++。
因为++和*同优先级,结合方向为自右向左,因此它等价于*(p++),作用是先得到p指向的变量的值,即(*p),然后再使p=p+1;而(*p)++表示p所指向的元素值加1,即(a[0])++;如果a[0]=3,则(a[0])++的值为4,这里是元素值加1,而不是指针值加1。
3 结语综上所述,在使用自增、自减运算符时,若在表达式或语句中只包含一种操作时(自增或自减),则前置式和后置式的作用都是一样的,都是使变量加l或减1。
若自增、自减运算符和其它运算符联合使用时,就需根据从不同运算符优先级和结合性两点上综合考虑变量的变化方式。
笔者希望对此所作的探讨,能够有助于初学者对自增、自减运算符的使用规则的正确理解。
同时,笔者希望用C语言设计程序时,为了保证可靠性,程序必须清晰易读,而表达式的清晰易读是十分重要的方面。
因此,在C 程序设计中,要慎重使用自增、自减运算符,特别是在一个表达式中不要多处出现变量的自增、自减等运算。
C 语言的自增/自减运算符探析
唐淑玲
(大连职业技术学院 辽宁大连 116038)
摘 要:在C语言提供的纷繁复杂的运算符当中,最让人费解的要算自增运算符与自减运算符了。
本文是笔者在C语言教学过程中归纳总结的自增与自减运算符的具体应用,希望它能对教师的教学与学生的自学有所帮助。
关键词:C语言 自增运算符 自减运算符 探析
中图分类号:TP 3文献标识码:A 文章编号:1672-3791(2011)06(a)-0013-01
. All Rights Reserved.。