第5章 运算符及其表达式.ppt_第1页
第5章 运算符及其表达式.ppt_第2页
第5章 运算符及其表达式.ppt_第3页
第5章 运算符及其表达式.ppt_第4页
第5章 运算符及其表达式.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章运算符及其表达式。运算符是指用于对操作数执行各种操作的操作符号。表达式是由多个操作数和运算符组成的合法表达式。操作数包括常量、常量、变量和函数。本章内容如下:算术运算符和算术表达式;赋值运算符和赋值表达式;关系运算符和关系表达式;逻辑运算符和逻辑表达式;条件运算符和条件表达式;逗号运算符和逗号表达式;位运算符。5.1算术运算符和算术表达式。算术运算符包括基本算术运算符和自增自减运算符。基本算术运算符是数字数据和字符数据的加法、减法、余数和除法四种运算。5.1.1算术运算符,算术运算符的具体应用原则:(正)和-(负)运算符属于同一级别的单目运算符,组合方向是从右向左。(正)和-(负)操作符

2、是属于同一级别的双目操作符,组合方向是从左到右。例如,a b-c d *,/,%是同一级别的双目操作符,组合方向是从左到右。例如:a b*c,运算顺序是先计算B和C的乘积,然后和A相加,即a (b*c)。算术运算符注意以下几点:除数/(除法运算符)不能是0,也就是说,它不能被一个数除以0。*(乘法运算符)不能在公式中省略,也不能在代数表达式中写成乘法符号“”或“”。例如,长方体的体积公式是abc,编程时应该写成:a*b*c。如果两个整数相除,就得到一个整数结果。如果两个实数相除或者其中一个是实数,那么结果就是实数。例如,5/3=1,2/4=0,5/-3=1,5。/3=1.666667,5.0/

3、3.0=1.66667%的余数运算符(或模运算)仅适用于整数数据和字符数据。余数运算结果的符号与被除数相同,其值等于两个数相除后的余数。5%3 /*的值是2 */-7%-3 /*是-1 */。算术运算符要注意以下几点:-(自增和自减算子)属于同一层次的单目算子,其组合方向是从右向左。自增和自减运算符只能与变量结合使用,在变量之前或之后。有以下四种形式:a:a的值在参与其他操作之前增加1。a:a的值首先参与其他操作,然后将a的值增加1。-a:在参与其他操作之前,a的值减少1。a-:a的值首先参与其他操作,然后将a的值减少1。例如:m=3;m1=m;相当于m=3;m;m1=m;示例5-1中 和-运

4、算符的使用。对于自增和自减运算符,请解释以下几点:自增或自减函数只能用于变量,不能用于常量或表达式。例如:(甲)乙)这种表述是错误的。在表达式中多次增加或减少变量可能会导致混淆。a=3;k=(a)(a);这种程序很容易出错,所以在编程过程中有必要避免使用这种程序,而没有必要使用这样一种困难的程序,所以可以用另一种方法来表达以增加程序的可读性。-运算符的组合方向是从右向左,例如,-i相当于-(i)。-运算符的优先级高于乘法、除法和余数。运算符操作的操作对象只能是整数变量、字符变量和指针变量,不能是其他类型的变量。-运算符操作通常用于循环变量,它会自动加1或减1。它也可以用于指针变量,指针指向前一

5、个或后一个地址。5.1.2算术表达式,使用算术运算符连接操作数或操作数,形成符号C语言的语法规则公式,称为算术表达式。在算术表达式中,操作数包括常量、变量和函数。例如:x y*a/x-5%3,3.5 56 3.14,a *1/3。5.1.2算术表达式。关于算术表达式有几种解释:算术表达式的求值顺序是根据算术运算的优先级别,高优先级的算术表达式以表达式8%3 9/2为例,运算符%和/的优先级高于运算的优先级,因此在运算过程中,我们首先计算余数和除法,8% 3=2,9/2=4,然后求和2 4=6,最终结果为6。在算术表达式中,操作数既有常量又有变量。例如:5*2(双倍)(8% 3)示例5-2。5.

6、2赋值运算符和赋值表达式。C语言中的赋值运算符包括简单赋值运算符和复合赋值运算符。本节主要解释简单赋值运算符,复合赋值运算符将在位运算符部分详细解释。5.2.1赋值运算符,它与代数中的等号相同,即“=”。赋值运算符的作用是将运算符右侧的表达式的值赋给左侧的变量,其组合是从右向左的。例如:a=5;5.2.1赋值运算符,我们对赋值运算符有如下理解:(1)赋值运算符“=”的左侧必须是变量,右侧可以是常量、变量、函数调用或表达式。例如:s=a*b/c-12.34整数a;a=b;(2)赋值和运算符“=”看起来与数学中的等号“=”一样,但它们的含义和功能完全不同。a=a2;(3)复合赋值运算符是其他运算符

7、和基本赋值运算符的组合。例如:a=3;相当于:a=a3;b *=a;相当于b=b*a。h/=x y;它不能理解为:h=h/x y,但应该理解为h=h/(x y),5.2.2赋值表达式,通过赋值运算符连接变量和表达式的公式称为赋值表达式。一般的书写形式如下:变量赋值运算符表达式赋值表达式:a=10 b=c d a/=d 2赋值语句:a=10;b=c d;a/=D2;5.2.2赋值表达式,对于赋值表达式,应说明以下几点:(1)赋值运算符的左侧必须是变量,而赋值表达式的左侧可以是变量,也可以是赋值表达式。当赋值表达式的左侧是赋值表达式时,应该用括号括起来。(a=3*4)=4*6(正确)a=3*4=4

8、*6(错误)(2)赋值表达式右侧的表达式可以是算术表达式、关系表达式、逻辑表达式等。或赋值表达式。例如,c2=c1=5等于c2=(c1=5) (3)赋值表达式可以包含复合赋值运算符。例如,c2=c1=1相当于c2=(c1=1) (4)在C语言中,赋值操作不仅出现在赋值语句中,还可以以表达式的形式出现在其他语句中。printf(%d ,a=b=3);5.3关系运算符和关系表达式。在C语言中,关系运算常用于选择结构和循环结构的条件判断。由关系运算符连接的公式称为关系表达式,用于判断条件。5.3.1关系运算符是用于比较两个操作数大小的运算符,实际上是一个“比较运算”,运算结果只能是“1”或“0”。当

9、它们之间的比较关系建立时,结果是“1”;当它们之间的比较关系无效时,结果为“0”,因此关系运算符的结果类型为整数。5.3.1关系运算符,解释了以下几点:(1)关系运算符的优先级低于算术运算符,但高于赋值运算符。例如:a=2*28,顺序为a=(2*2)8) (2)用于比较的两个操作数是整数类型和字符类型,两个表达式也可以连接。比较的结果是一个逻辑量,即“真”或“假”。在C语言中没有逻辑值,它分别由整数1和0表示。(3)关系运算符的组合方向是从左到右,所以当表达式中出现优先级相等的关系运算符时,操作从左到右开始。(4)在关系运算符中,“=”表示相等,并且!=表示不相等,这与数学中的表示完全不同。因

10、此,在编程时应该特别注意,以免写错关系运算符而导致错误的结果。A=b a=b,5.3.2关系表达式,用关系运算符连接两个表达式形成的公式称为关系表达式。一般的书写形式如下:表达式关系运算符表达式,例如:A(c=a)该关系表达式中的表达式是赋值表达式,字符A赋给变量c,即Aa,A的ASCII值是65,A的ASCII值是97,即6597,所以关系不成立,关系运算的结果是0。5.4逻辑运算符和逻辑表达式、逻辑运算符和关系运算符经常一起使用。关系运算是指值之间的关系,逻辑运算是指将真值和假值连接在一起的方式。因为关系运算符产生真或假的结果,所以逻辑运算符通常用在关系运算表达式中。5.4.1逻辑运算符,

11、是包含关系运算符的两个表达式或逻辑值的运算符号,运算结果是逻辑值。来解释逻辑运算符:(1)“和“| |”是双目操作,需要两个操作数,如ab、a | | b和“!”是只需要一个操作数的单目运算符,例如!a .(2)逻辑非的优先级高于逻辑与,逻辑与的优先级高于逻辑非。(3)运算符之间的操作优先级是逻辑非(!)运算符的优先级最高,算术运算符的优先级高于关系运算符,关系运算符的优先级高于逻辑and()和逻辑OR(| | |),而赋值运算符的优先级最低。5.4.2逻辑运算规则,逻辑运算的运算规则可以简单地概括如下:逻辑与真是真abc逻辑或真是假a | b | c逻辑当不是假时就变成真!a,5.4.3逻辑

12、表达式,通过连接逻辑运算符形成的表达式称为逻辑表达式。逻辑运算的对象通常是关系表达式、逻辑表达式、算术表达式、赋值表达式和其他表达式。例如:a10 a=15)/*逻辑表达式的操作数是一个逻辑表达式*/(m=ab)(n=cd)/*逻辑运算符的操作数是一个赋值表达式*/t=x | | y | z/*逻辑运算符的操作数是一个算术表达式*/,并且逻辑运算有时很复杂,因此应注意以下几点:(1)逻辑表达式可以包含多个逻辑运算和各种其他运算符。首先,注意哪些数值运算是数值运算,哪些是关系运算,哪些是逻辑运算,找出各种运算符之间的关系,然后根据它们的优先级执行运算。(2)在评估逻辑表达式的过程中,没有必要将表

13、达式评估到底。这就是逻辑运算的特殊性,称为短路运算。例如,ABC示例5-6输入几个字符,分别计算数字字符和英文字母的数量,并在输入换行符时输出统计结果,然后操作结束。5.5条件运算符和条件表达式。条件运算符是C语言中唯一的三项式运算符,它根据一个表达式的结果是真还是假来执行两个表达式中的一个。这个运算符也称为三元运算符,因为它涉及三个操作数,一个用于判断的表达式和两个其他表达式。5.5.1条件运算符,由符号“?”定义和“:”。条件运算符有三个操作数,都是表达式。第一个操作数可以是任何类型的表达式,如算术表达式、关系表达式、赋值表达式和逻辑表达式,后两个表达式是相同类型的任何表达式。条件运算符的

14、优先级、5.5.2条件表达式以及通过连接条件运算符形成的表达式称为条件表达式。一般的表达式是:表达式1?表达式2 :表达式3,5.5.2条件表达式。关于条件表达式给出如下解释:(1)条件表达式包含三个操作数,它们都是表达式,可以是各种类型的表达式。通常,表达式1是关系表达式或逻辑表达式,用于描述条件表达式中的条件,并且根据条件的真或假来判断是否执行表达式2或表达式3的运算。表达式2和3可以是常量、变量或表达式,如算术表达式、关系表达式、赋值表达式和逻辑表达式。,5.5.2条件表达式,(2)条件表达式的求解过程:步骤1:求解表达式1的值。步骤2:如果表达式1的值为真或不为0,将表达式2的值求解为

15、整个条件表达式的值。第三步:如果表达式1的值为假,即等于0,则将表达式3的值作为整个条件表达式的值求解。5.5.2条件表达式,(3)条件表达式可以嵌套,即条件表达式中的表达式2和3可以是一个条件表达式。(4)在正常情况下,条件表达式和结构程序设计中的if语句可以相互替换。(5)在条件表达式中,表达式1的类型可以不同于表达式2和表达式3的类型,并且表达式值的类型可以更高。5.6逗号运算符和逗号表达式,逗号在C语言中可以用作运算符,称为逗号运算符。5.6.1逗号运算符,(1)逗号运算符是双目运算符,运算的对象可以是任何类型的表达式,运算的结果值是最后一个表达式的值。(2)逗号运算符是所有运算符中优

16、先级最低的。(3)逗号运算符的组合方向是从左到右。逗号运算符连接表达式,操作按连接顺序执行,因此也称为顺序求值运算符。(4)并非所有逗趣都用作逗号运算符,有时逗号用于表示对象之间的间隔。printf(%d,%d,%d,a,b,c);5.6.2逗号表达式,用逗号运算符连接表达式形成的表达式称为逗号表达式。逗号表达式的语法格式为:表达式1,表达式2,5.6.2逗号表达式。对逗号表达式给出如下解释:(1)逗号表达式的求解过程是:先求解表达式1,然后求解表达式2。整个逗号表达式的值是表达式2的值。(2)在求解逗号表达式的过程中,应注意运算符之间的优先级,逗号运算符的优先级最低。(3)逗号表达式可以嵌套

17、,即表达式1和2本身也可以是逗号表达式。(4)逗号表达式只不过是“连接”几个表达式,并按照它们出现的顺序对它们进行求值。表达式“(a=12,a*4),a 5”相当于“a=12,a*4,a 5”,也就是说,表达式是按顺序计算的。逗号表达式的一般形式可以扩展为:表达式1、表达式2、表达式3、表达式n、5.7位运算符。位操作是C语言的一种特殊操作功能,它以二进制位操作,即对数字的二进制位进行操作。位运算符分为三种类型:位逻辑运算符、位移位运算符和位自反赋值运算符。按位操作数只能是整数(int、short、unsigned、long)或字符(char)数据。5.7.1位逻辑运算符。位操作指的是二进制数的逐位操作。它的操作对象是一组二进制位,每个二进制位只能容纳0或1。位逻

温馨提示

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

评论

0/150

提交评论