欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    c语言基础教程第三章运算符和表达式免费版.docx

    • 资源ID:8787655       资源大小:94.96KB        全文页数:33页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c语言基础教程第三章运算符和表达式免费版.docx

    1、c语言基础教程第三章运算符和表达式免费版完全免费版第三章运算符和表达式3.1.1算术运算符 算术运算符分单目运算符和双目运算符两种。单目运算符只有求负数运算符(一),又称为负值运算符。与它对应的正值运算符(+)很少使用,这里不详述。负值运算符是用来改变一个操作数的正或负号的。在一个正数前加一负值运算符后,则该数变为负数;在一个负数前加一负值运算符后,则该数变为正数。 双目运算符有如下5种: +:加法运算符。如,3+9十I1. 一:减法运算符加,7一40 *:乘法运算符。如,5*3 /除法运算符。如,18/6 %:求余运算符。如,12%5. 这5种运算符都要求有两个操作数,故称双目运算符。 说明

    2、: (1)除求余运算符只适用整型数运算外,其余运算符可以作整数运算,也可以作浮点数运符。加、减法运算符还可作字符运算。 (2)两个整数相除其结果为整数。例如,8/5结果为1.小数部分舍去。如果两个操作数有一个为负数时,则舍入方法与机器有关。多数机器是取整后向零靠拢。例如,8/5取值为1.8/5取值为一1,但也有的机器例外。 (3)求余运算符的功能是舍掉两整数相除的商,只取其余数。两个整数能够整除,其余数为0,例如,8%4的值为0,当两个整数中有一个为负数,其余数如何处理呢?请记住,按照下述规则处理: 余数=被除数-除数*商 这里,被除数是指%左边的操作数,除数是指%右边的操作数,商是两整数相除

    3、的整数商。 例如,-8/5的余数应该是 5*(-1)=-3 而8/一5的余数应该是 8-(-5)*(-1)=3 (4)一个字符常量可与整数作加减运算。下列表达式是合法的: C+A-a 其中,c是一个字符变量,该表达式将c所存放的大写字母变成了小写字母。3.1.2 增1减1运算符 增1和减1运算符也是属于算术运算符,这是两个单目运算符,这两个运算符具有副作用,因此,单独列出讲解。 增1运算符的作用是使被作用的变量值增1,而使其表达式的值或增1或不增1,这取决于前缀作用还是后缀作用。前缀作用时,则表达式值增1;后缀作用时,则表达式值不增to所谓前缀作用是指运算符作用在变量之前,后缀作用是指运算符作

    4、用在变量之后。增1运算符是由两个加号组成的:十+.例如: int i=5 执行+i后,i的值为6,而+十1的值也是6,执行i十+后,i的值为6,而i+的值为5. 可见,增1运算符实际上有两个作用,除了可以产生一个表达式的值之外,还会改变其变量本身的值。一般的运算符只有产生表达式的值这一功能,而没有改变变量值的功能。例如,求负数运算符,在下述表达式中。没有改变变量本身的值: int i=5; 一i的值为一5,而i的值仍然是5e 我们说增1运算符有副作用是指这种运算符除了产生表达式值的作用之外,还有一个改变变量的作用,后一个作用不是所有运算符都有的,故称为副作用.在C语言中,具有副作用的运算符除了

    5、增1减1运算符外,还有赋值运算符。 总结一下增1运算符功能上的特点如下: 增1运算符作用于一变量,可使该变量的值增i;如果前缀作用于变量,则其表达式的值为原变量值增1;如果后缀作用于变量,则其表达式的值为原变量的值。 同样的道理,减1运算符功能上的特点如下: 减1运算符作用于一变量,可使该变量的值减1;如果前缀作用于变量,则其表达式的值为原变量值减1;如果后缀作用于变量,则其表达式的值为原变量的值。例如: int a=2; 执行一一a后,a变量的值为l,一一a表达式的值为1;执行a一一后,a量的值为1,a一表达式的值为2. 在学习和掌握增1和减1运算符时,应该搞清楚下列的两个不同。 .变量值和

    6、表达式值的不同; .前缀作用和后缀作用的不同。 在使用增1和减1运算符时应该注意:它只能作用于变量,而不能作用于常量和表达式,例如,下列写法都是不合法的: int a=5,b=3; +十一a, (a+b)+,+10,一一(a*b)等 关于增1减1运算符组成表达式计算问题在本章后面还会讲述。3.1.3关系运算符 关系运算符都是双目运算符,其功能是用来对两个操作数的大小进行比较的。C语言提供了如下6种关系运算符: :小于运算符。如,ab =:小于等于运算符。如,c:大于运算符。如,bc- =:大于等于运算符,如,b=o =等于运算符。如,c=b !=;不等于运算符。如c! =l0 在这6个运算符中

    7、,前4个优先级相同,后两个优先级相同。 关系运算符组成的关系表达式的值是逻辑值。即是真或假。例如,a5的值要么是真,要么是假,取决于a的值。如果a值为8,则a5为真。在C语言中没有逻辑类型的量,规定真用1表示,假用。表示。于是,a5值为1.这里的1就是数字1.例如,下述表达式是合法的; (a5)十2 其值为3, 这是C语言不同于其他语言之处。 关系运算符常用来组成关系表达式作为某些语句的条件,故称条件表达式。 关于等于运算符是由两个代数式中的等号组成的,有时容易写成一个等号与代数式中的等号相混。在C语言中,一个等号是赋值运算符,它与等于运算符截然不同,请一定注意其区别。3.1.4逻辑运算符 逻

    8、辑运算符是用来对操作数进行逻辑操作的。C语言提供了如下的逻辑运算符。 单目的逻辑运算符:!表示逻辑求反或逻辑非,如,!(a+b) q 双目的逻辑运算符:乙衣表示逻辑与,即对两个操作数进行逻辑求与。例如,a$b | 表示逻辑或,即对两个操作数进行逻辑求或。 关于逻辑求反是对真求反后为假,对假求反后为真。 关于逻辑求与是指两个操作数中只有都是真时,求与后才是真。否则,求与后为假。 关于逻辑求或是指两个操作数中只要有一个为真时,求或后就为真。只有两个都是假时,求或后才是假。 操作数的真与假是这样规定的:非零为真,零为假。 逻辑运算结果的真与假是这样规定的:真用1表示,假用0示。 例如, int a=

    9、5,b=0; !a的值为0,因为a为真,则!a为假。 a&.b的值为。,因为b为假,则a&:.b为假。 a!|的值为1.因为a为真,则a|b为真。 !a|b的值为0,因为!a和b都为假,则!a|b为假。3.1.5位操作运算符 位操作运算符又分为逻辑位运算符和移位运算符两类。1.逻辑位运算符 逻辑位运算符是一种对操作数按其二进制位进行逻辑操作的运算符。它包含如下几种: 单目运算符:表示按位求反运算符。如一5. 双日运算符:冬表示按位与运算符。如5&3 表示按位或运算符。如,3|5 一表示按位异或运算符。如,;5 7 进行逻辑位操作时,先将操作数化为二进制数,然后按下列运算规则进行。 按位求反是将

    10、操作数中各个二进制位逐位求反,即1求反后为0,0求反后为1 按位与是将两个操作数各二进制位从低位到高位对齐,再将每位的两个二进制数相与,除了两个i为1外。其余为。 按位或是将两个操作数各二进制位从低位到高位对齐。再将每位的两个二进制数相或,除了两个。为0外,其余为1, 按位异或又称按位加,忽略进位,先将两个操作数各二进制位从低位到高位对齐,再将每位的两个二进制数相加,不考虑进位,即两位相同的二进制数,则为0,两位是不同的二进制数。则为1. 例如,假定仅按sf-进制长度计算。且不考虑符号位: 5为242 5&3为1 53为r7 53为6 逻辑位运算符组成的表达式的值是劝。术值。它与逻辑表达式不同

    11、。2.移位运算符 移位运算符是用来将某个操作数向某个方向(或左,或右)移动所指定的二进制位数。移位 运算符是双目运算符,它包含有左移和右移两种 表示右移运算符。如,a2. 表示左移运算符。如,b2的值为1 42的值,如果是1,则右移运算时补符号位,否则是补0。3.1.6赋值运算符 赋值运算符是用来给变量斌值的。它是双目运算符,用来将一个表达式的值送给一个变量。C语言中,赋值运算符有一个基本的和10个复合的。 基本的赋值运算符是-.该运算符左边一般是变量或表示某个地址的表达式,称为左值,该运算符的右边一般是一个表达式,称为右值。 组合的赋值运算符包含由5个算术运算符与基本赋值运算符组成的和由5个

    12、位操作运算符与基本赋值运算符组成的,它们分别是: +=表示加赋值运算符。如,a+=b等价于a=a+b. 一=表示减赋值运算符。如,a一=b等价于,a=a-b. *=表示乘赋值运算符。如,a*=b等价于a=a*b. /=表示除赋值运算符。如,a=b等价于a=a/b. %=表示取余赋值运算符。如,a% =b等价于a=a%b. &=表示位与赋值运算符。如,a&= b等价于a =a&b. |=表示位或赋值运算符。如,a|=b等价于a=a|b. -=表示位异或赋值运算符。如,a=b等价于a=b. =表示右移赋值运算符。如,a=b等价于a=ab. =表示左移赋值运算符。如,ab等价于a=ab. 复合赋值运

    13、算符所表示的表达式不仅比一般赋值运算符表示的表达式简练,而且所生成的目标代码也较少。因此,C语言程序中尽量采用复合赋值运算符的形式表示。 赋值运算符是一种有副作用的运算符。该运算符可产生一个表达式的值,同时又将改变其变量的值。例如, x=5; 它将表示如下两层意思:一是使变量的值被改变为5,不论变量x原值是多少,执行上述语句后,x的值为5.二是表达式x= 5的值也是5,可将该表达式的值赋给另一个变量,也可以将该表达式的值输出显示。因此,下面的语句是正确的,并能验证x= 5表达式的值是5 int x=3. m; printff( %dn,x=5), m=x=8; printf(%dn ,m),

    14、第一个printf ( )语句输出为5,它表明表达式x= 5的值为5.这时如果输出二的值也应该是5.第二个printf()语句输出为8,它表明m的值是S,而m的值是通过表达式x=8的值获得的。因此,在C语言的程序中,连续赋值是有意义的。表达式m=x=8;是先将8赋值给x,再将x=8表达式的值8赋给m所以,m获值为8.在使用赋值运算符时应注意该运算符的副作用。3.1.7其他运算符 除了上述的6类运算符外,所有其他运算符在这里讲述。1.三目运算符 三目运算符是由两个字符组成,要求三个操作数的一种特殊运算符,该运算符的功能类似于条件语句,故称条件运算符。其格式如下所示: dl? d2:d3 其中,d

    15、l , d2和d3是二个表达式。?:是二目运算符。该运算符的功能是:先计算d1,如果dl的值是非。,则整个表达式的值是d2的值;如果dl的值是。,则整个表达式的值是d3的值。关于整个表达式的类型将是d2和d3这两个表达式中类型高的一个。2.逗号运葬符 在C语言中,逗号(,)既可作分隔符又可作运算符。逗号运算符是用来把若干个表达式连接起来合成一个表达式,逗号表达式的值则是组成它的最后一个表达式的值,它的类型也是最后一个表达式的类型,逗号运算符较少使用,它只是用在只允许出现一个表达式的地方而又要同时出现几个表达式时,用它将几个表达式连起来组成,一个逗号表达式。3.强制类型运茸符 该运算符是用来强制

    16、一个表达式的类型的。该运算符是由一对圆括号括起一个类型说明符组成的,它作用于某个表达式的前面,便将这个表达式的类型强制成圆括号中所指定的类型。例如, (int)(a=b+c=I.5) 将表达式ab+c*1.5的类型强制成为int型。这种强制是暂时的,它不改变表达式中各变量原来的类型。对于同一个表达式可根据需要强制成这种类型或那种类型,不论表达式的类型比强制成的类型高还是低,都是可以的。 强制类型运算符是单目运算符在程序中经常使用。4. sizeof运算符 该运算符用来求得某种类型或某个变量所占内存的字节数。它是一个单目运算符,作用于类型说明符或变敏名的左边,并用圆括号将作用的类型说明符或变量名

    17、括起来。其格式如下所示: sireof是用来表示指向结构/联合变量的指针成员的。详见本书结构联合枚举一章。6.取地址运算将 该运算符是用来获取某个变量的地址值的,它是一个单目运算符。其格式如下所示: &变量名) 其中,乙是取地址运算符。该运算符可作用在变量名、数组元素名、结构变量名前,不能作用在常量、表达式和数组名前。因为常量和表达式是没有内存地址的,数组名本身已是一个地址值了。例如, int a,b; &表示取变量a的地址值,即是变量a在内存中被分配的内存地址值,只有被存放在内存中的变量才可取地址值,同样,&.b表示取变量b的内存地址值。7.取内容运算符 该运算符是用来间接地获取某变量的值。

    18、假定,一个指针p指向某个变量a,并且变量a在内存中存放的值为5.将该运算符作用于p(即、P)则表示取P的内容,而p的内容是它所指向的变量a的值。因此,取内容运算符是用来获取被该运算符所作用的指针所指向的变量的值。该运算符实际上是通过指针来间接取变量的值。该运算符是一个单目运算符,运算符的符号是,.例如, int a=5,*p=&a; *p的值是5.即指针p的内容是5,也就是指针p所指向的变量a的值。 关于取内容运算符和前面的取地址运算符将在本书指针一章中还会详述。8.括号运算籍 该运算符是用来改变原来的优先级的。括号运算符的优先级最高。括号运算符可以包含使用(即嵌套),即在括号内还可以使用括号

    19、,在出现多重括号时,应该先作最内层括号,按从里向外的顺序进行。在实际编程中,经常使用括号来改变优先级,即在某些表达式中要求先作优先级低的运算符,这时只好用括号来改变优先级。例如,在下述表达式中, c=getchar ( )!=EOF 其中,c是一个int型变量,可用来存放字符。getchar ( )是前面曾介绍过的从键盘上获得一个字符的函数,EOF是一个符号常量,其值被定义为一1.该表达式要求从键盘上获取一个字符后先放在变量c中保存,然后再判断该字符是否不等于一1.一般的字符是不会等于一1的。作为终止键盘输入的符号( ctrl) +z+回车)才是一1.而上述表达式按运算符的优先级是先将获取的字

    20、符判断是否是一1,然后将判断结果赋给变量c.显然,上述表达式与要求不一致,为此加括号改变优先级后将与要求相符: (c=getchar()!=EOF 括号在c语言程序中是经常使用的。也是干一分重要的。 以上共讲述了k个运算符的功能及使用时应注意的事项。3.2.1运算符的优先级C语言中运算符的优先级共分15级。记住每种运算符的优先级在计算表达式的值或书写表达式语句中是十分重要的。下面讲述如何记住优先级的方法。 记优先级妙诀如下: 去掉一个最高级,再去掉一个最低级。 一、二、三和赋值。 说明:最高级是括号和元素及成员(共4个).最低级是逗号(1个).一是单目运算符(共9个),二是双目运算符(共1 F

    21、个),三是三目运算符(1个),赋值是赋值运算符(11个).接着。在双目运算符中。还包含有0个优先级。这10个优先级记忆方法是: 算术2.关系2,逻辑2;移位1插在前,逻辑位3插在后。 说明:算术2表明算术运算符又分二个优先级,、,/和%在前,+,-在后。关系2表明它在算术运算符后边有二类优先级,,=在前,+,-在后。逻辑2表明它在关系运算符之后。又分2个优先级,&在前,|在后。移位1插在前表明移位运算符是1个优先级插在算。术和关系之间,即夕和.逻辑位3插在后表明逻辑位运算符有3个优先级,&在前,-在中,|在后,它们插在关系和逻辑之间,这样,15种优先级的顺序就记住了。3.2.2运算符的结合性

    22、前面讲述了运算符的15种优先级,优先级高的先作运算,优先级低的后作运算。那么,有若干个优先级相同的运算符组成的表达式,先作哪个呢?这就要看结合性了。结合性分两类,一类是从左至右,一般运算符都属于一类;另一类是从右至左,只有少数的3类运算符属于这一类,它们是:单目、三目和赋值。可见。只要记住了三类从右至左结合性的运算符就可以了,因为其余都是从左至右。 优先级和结合性虽然都是用来判断表达式的计算顺序的,但是它们却是两个完全不同的概念,优先级有15类,结合性只有z种:判断表达式计算顺序时,先按优先级高的先计算,优先级低的后计算,当优先级相同时再按结合性,或从左至右顺序计算,或从右至左顺序计算。例如,

    23、 a一b,c、d; 这个表达式计算顺序,光按优先级应先作b.,然后,剩h的运算符一和十的优先级相同,再按自左至右的结合性顺序、先作减法运算、后作加法运算。从这里可以进一步看出记忆优先级和结合性对解决计算顺序间题是何等的重要! 下面给出一张表,该表中清楚标明C语言中运算符的种类、名称、优先级和结合性。3.3.1表达式和表达式的种类 1表达式 表达式是常量、变量、函数和运算符组合起来的有意义的式子。 下面都是合法的表达式: +a一3 b/=4 x=y (rn=1)$-n,6 a=1, b=2, c=3 X+sin,(y) x2?m:n 合法表达式经过计算后都将具有一个确定的值和类型。 下面是一些非

    24、法表达式: 5.3%2 +3+2 +十一a一b 非法表达式是没有值和类型的,在编译中系统将指出表达式是非法的。C语言是一个多表达式语言,这意味着C语言中有种类繁多的表达式,它包含了别的语言中所没有的一些表达式,在C语言程序中表达式语句占的比例很大,关于表达式语句下一章讲述。 2.表达式的种类 这里介绍C语言中的各种表达式。表达式的种类与运算符的种类有关,由于C语言中运算符种类多,因此,表达式种类也多。它们是算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式和逗号表达式。 (1)算术表达式 由算术运算符、增1减1运算符和位操作运算符组成的表达式都属于算术表达式。 算术表达式的值为整型的称

    25、为整型表达式,其值为浮点型的称为浮点型表达式。算术表达式的类型由参与算术表达式的各操作数的类型决定的。如果参与算术表达式的各操作数的类型都相同,则表达式的类型与操作数的类型相同,如果参与算术表达式的各操作数的类型不同,则表达式的类型由操作数中类型最高的决定。 下面通过例题来熟悉和掌握各种算术表达式的计算方法。例3. 1 整型数运算。 main () int x,y; printf(Input x,y); ecanf(%d%d,&x,&y); printf (x+y=%d,x一y=%dn,x+y,x一Y); printf(x*y=%d,x/y=%dn,x*y,x/y) primf( (x/y)*

    26、y+x(mod)y= %dn,x/y*y+x%y); 执行该程序后,屏幕上显示如下提示信息: Input x. y:12 5 键入12,空格,5回车后,屏幕上显示如下输出信息: x+y-.,17,x一y=7 x*y=60, x/y=2 (x/Y)*y+x(mod)y=12 这里,需要说明的是两个整数相除,结果为整数,即x/y结果为2.而x%Y的结果也为2,前者是整数商为2,后者是相除后余数为2.本例中出现的表达式都是核型的算术表达式。例3.2浮点数运算。 main () float a,b=B. 5; a=7.2; a=b printf (% fn,n); a/=b; printf (%.4fn , a ); printf (%,Ialfn ,a). 执行该程序的输出显示结果如下: 6I. I,99997 7. 2Q00


    注意事项

    本文(c语言基础教程第三章运算符和表达式免费版.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开