c语言的自增自减运算符_第1页
c语言的自增自减运算符_第2页
c语言的自增自减运算符_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c语言的自增自减运算符

运算符的组合和c语言的操作灵活性是c语言的基本功能。在许多运算符中,更容易更改自由执行的运算符。c语言允许使用具备两个以上赋值功能的表达式,例如赋值功能丧失控制、自由执行功能衰减控制等。这种灵活性使程序简单,但也带来副作用。该缺陷主要体现在对程序的解释上,这是误解或错误的。1自增自减运算符C语言的自增知减运算符分别是:++,——.其操作的对象只能是变量,作用是使变量的值加1或减1.因为自增、自减运算符具有对运算量重新赋值的功能,而常量、表达式无存储单元可言,当然不能做自增、自减运算,只要是标准类型的变更,不管是整型、实型,还是字符型、枚举型都可以作为这两个运算符的运算对象.自增自减运算符形式可分为两种,即前置式++i,--i和后置式i++,i--.前置式在使用变量i之前先使i的值加减1,后置式在使用变量i之后,使i的值再加减1.++,--运算符出现在条件表达式中,对于条件表达式进行运算,因为a=a+1=-1+1=0,所以(++a<0)为假,而且C语言规定:在一个“&&”表达式中,若“&&”的一端为0,则不必再计算另一端,该表达式的值肯定为0,所以此时不再执行语句--b,即b的值仍为1.2.2“++、一站式”运算符的计算顺序j=-i++;printf(“%d,%d

”,i,j);运行结果为:3,-2在C语言中,“++、一一”运算符与“-”的优先级相同,结合方向从右至左,所以表达式-i++相当于-(i++),计算顺序是先计算表达式i++,表达式取i的值为2,然后变量i增1;2再做取负值运算,表达式-i++的值为-2;再将-2赋给变量j.2.3注意型“++、--”运算符intx=3;do{printf(“%d”,x-=2);}while(!(-x));这个程序段主要考查的是“++、--”运算符在do…while语句中的应用.--x相当于x=x-1,C语言规定:非0的数一律为真.在执行的过程中先输出x=x-2=1的值,此时条件表达式(!(--x))=(!0)=1,即表达式为真,进入循环体;输出x=x-2=-2的值,此时条件表达式(!(--x))=(!(-3))=0,值为假跳出循环.2.4加1n,n为2,第一个语句中变量m是先减1(m=9)后比较,而变量n则是先比较(n=5)后加1(n=6).由于9不等于5,所以执行++n,n先加1(n=7)再赋给x,得到x=7.之后在执行语句“y=m++;”中,先将m的值赋给y(y=9),之后m加1,最后执行语句“z=n;”再将n的值赋给z.2.5自左至右顺序虚实参值的处理在函数的调用中,要求实参与形参的个数应相等、类型应一致,实参与形参按顺序对应,一一传递数据.但应说明:如果实参表列包括多个实参,对实参求值的顺序并不是确定的.有的系统按自左至右顺序求实参的值,有的系统按自右至左的顺序求值.许多C版本(例如TurboC和MsC)是按自右至左的顺序求实参的值.如果按自左至右顺序求实参的值时,使第一个参数i取2,第二个参数先使i增1,再赋给表达式++i,从而为3,此时函数调用相当于f(2,3),程序运行结果为“-1”,如果按从右至左顺序求实参的值,先执行++I,使i的值加1后赋给表达式++i,则它相当于f(3,3),程序运行结果为“0”.以上程序中的这种方法不宜提倡,最好改成:j=++i;printf(“%d,%d”,j,i);.2.6生成p+p+*p++到底该理解为*(p++)还是(*p)++呢?在C语言中,“*”与“++、——”的优先级相同,结合方向从右至左.对于*p++,相当于*(p++),其作用是先获得p指向变量的值,然后执行p=p+1.在使用自增自减运算符时常会出现一些人们“想不到”的副作用,在不同的例子中应用有所不同,初学者要慎用.下面我们结合不同的例子来对其加以分析.2在应用中的分析2.1操作时仅有一种操作时例:有以下程序段例:有以下程序段运行结果为:1-2例:有以下程序段综上所述,当“++”、“--”运算符所在的表达式或语句中只含有一种操作时(如++n;或n++;仅含有加1一种操作),则其前缀和后缀功能对程序的作用是一样的;而当含有两个或两个以上操作时,在考虑各个运算符的优先级别和结合性的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论