C世界中的加减乘除-运算符和表达式课件_第1页
C世界中的加减乘除-运算符和表达式课件_第2页
C世界中的加减乘除-运算符和表达式课件_第3页
C世界中的加减乘除-运算符和表达式课件_第4页
C世界中的加减乘除-运算符和表达式课件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、C世界中的加减乘除-运算符和表达式第4章 C世界中的加减乘除运算符和表达式 o C中的运算符和表达式 o 算术运算符和表达式o 关系运算符和表达式o 逻辑运算符和表达式o 条件运算符和表达式o 赋值运算符和表达式o 自增、自减运算符o 逗号运算符和表达式o运算符的优先级C世界中的加减乘除-运算符和表达式4.1 C中的运算符和表达式 4.1.1 运算符4.1.2 表达式4.1.3 优先级与结合性C世界中的加减乘除-运算符和表达式4.1.1 运算符用来对数据进行运算的符号,就可以称为运算符。语言中的运算符如下表所示:运算符种类作用包含运算符算术运算符用于各类数值运算加(+)、减(-)、乘(*)、除

2、(/)、求余(或称模运算,%)、自增(+)、自减(-)关系运算符用于比较运算大于()、小于(=)、小于等于(=)、不等于(!=)逻辑运算符用于逻辑运算与(&)、或(|)、非(!)位操作运算符参与运算的量,按二进制位进行运算位与(&)、位或(|)、位非()、位异或()、左移()赋值运算符用于赋值运算简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)、复合位运算赋值(&=,|=,=,=,b?a:b。 注意:条件运算符(?:)是注意:条件运算符(?:)是C语言中唯一的三目运算符。语言中唯一的三目运算符。 C世界中的加减乘除-运算符和表达式4.1.2 表达式C中运算符

3、和数据构成的式子,就称为表达式;表达式运算的结果就称为是表达式的值。根据运算符的分类,C语言的表达式分为以下8类: 算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式、逗号表达式、位表达式和其它表达式等。 由以上表达式还可以组成更复杂的表达式,例如:z=x+(y=0)C世界中的加减乘除-运算符和表达式4.1.3 优先级和结合性优先级:是指当不同的运算符进行混合运算时,运算顺序是根据运算符的优先级而定的,优先级高的运算符先运算,优先级低的运算符后运算。结合性:是指运算符可以和左边的表达式结合,也可以与右边的表达式结合,即:左结合性和右结合性。例如:x+y*z 注意:最典型的右结合性运算符

4、是赋值运算符,它的结合性是自右向左注意:最典型的右结合性运算符是赋值运算符,它的结合性是自右向左 C世界中的加减乘除-运算符和表达式4.2 算术运算符和表达式 4.2.1 算术运算符 4.2.2 算术表达式 4.2.3 算术运算符的优先级与结合性 4.2.4 应用举例C世界中的加减乘除-运算符和表达式4.2.1 算术运算符基本的算术运算符有5个,分别是:o +:加法运算符或正值运算符 o -: 减法运算符或负值运算符 o *: 乘法运算符 o /: 除法运算符 o %:求模运算符或求余运算符其中,+(正值运算符)和-(负值运算符)是单目运算符,其余均为双目运算符。2x2*xbaa/bC世界中的

5、加减乘除-运算符和表达式4.2.2 算术表达式简单的算术表达式,例如:o 2+3:结果为:5 o 2-3:结果为:-1o 2*3:结果为:6o 2/3:结果为:0o 2%3:结果为: 2注 意:(1)“%”运算符要求两侧的运算分量必须为整型数据; (2)在C中,乘法运算符为“*”,而不能写成数学中的“”号;除法运算为“/”,而不是“”号 。6.0%4 -6%46%-4-6%-4C世界中的加减乘除-运算符和表达式4.2.2 算术表达式复杂的算术表达式,例如:o2*(9/3) 结果为: 6o10/(12+8)%9) 结果为:5 C世界中的加减乘除-运算符和表达式4.2.3 算术运算符的优先级和结合

6、性 在复杂的算术表达式中:“()”的优先级最高,“*、/、%”运算符的优先级高于”+、”运算符。 算术运算符中的结合性均为“左结合”。 C世界中的加减乘除-运算符和表达式4.2.4 应用举例 【范例4-1】 使用算术运算符计算结果。 注意注意:对于“/”运算符,C语言中规定: 当它的两个运算分量均为整数时,计算结果也必须为整数。 如果两个运算分量中有一个数是浮点型时,则结果也应该为浮点型数据。例如:99.0/5的结果为19.8。 如果两个运算分量有一个为负值,其结果随不同的机器系统而不同,但多数机器采用“向零取整”的原则。例如:-7/4的结果为-1;7/-4的结果为1。 C世界中的加减乘除-运

7、算符和表达式4.2.4 应用举例 【范例4-2】 算术运算符和表达式的应用。C世界中的加减乘除-运算符和表达式4.3 关系运算符和表达式 4.3.1 关系运算符 4.3.2 关系表达式 4.3.3 关系运算符的优先级与结合性 4.3.4 应用举例C世界中的加减乘除-运算符和表达式4.3.1 关系运算符 o C语言提供了6种关系运算符,分别是: (大于)、=(大于等于)、(小于)、=”和“=”不能写成“”和“”; 等于在C中的书写格式为“=”而不是“=”,注意是两个“=”连起来写表示相等的关系,“=”是后面要讲的赋值运算符,注意二者的区别。C世界中的加减乘除-运算符和表达式4.3.2 关系表达式

8、 把两个C语言表达式连接起来的式子称为关系表达式;如:x!=0 a=A a*a+b*b+c*cy*y 注意:注意:数值型数据比较的是数值的大小;字符型数据比较的是ASCII码的大小。关系表达式的结果只有两个:1和和0。当关系表达式成立时值为1,不成立时值为0。例如:若x=3,y=5,z=-2,则:x+yz) 的结果为1 a=A 的值为0C世界中的加减乘除-运算符和表达式4.3.3 关系运算符的优先级和结合性 o “”、“=”、“”和“=”的优先级相同;o “=”和“!=”的优先级相同;o 前四种的优先级高于后两种。o 例如:a=bc 等价于 a=(bbc 等价于 (ab)c o 关系运算符中的

9、结合性均为“左结合”。 C世界中的加减乘除-运算符和表达式4.3.4 应用举例 【范例4-3】 输出程序中表达式的值01 #include02 void main()03 04 int a,b,c;05 a=b=c=10;/*a,b,c均赋值为10*/06 a=b=c;/*将b=c的结果赋值变量a*/07 printf( a=%d,b=%d,c=%dn,a,b,c);/*分别输出a,b,c的值*/08 a=bc=100;/*将bc=100的结果赋给变量a*/09 printf( a=%d,b=%d,c=%dn,a,b,c);/*分别输出a,b,c的值*/10 C世界中的加减乘除-运算符和表达式

10、4.4 逻辑运算符和表达式 4.4.1 逻辑运算符 4.4.2 逻辑表达式 4.4.3 逻辑运算符的优先级和结合性 4.4.4 应用举例C世界中的加减乘除-运算符和表达式4.4.1 逻辑运算符 逻辑运算符主要用于逻辑运算;包含了“&”(逻辑与)、“|”(逻辑或)、“!”(逻辑非)。其中,“!”是单目运算符,而”&”和 “|” 是双目运算符。 aba&ba|b!a真真真真假真假假真假假真假真真假假假假真C世界中的加减乘除-运算符和表达式4.4.2 逻辑表达式 o逻辑运算符把各个表达式连接起来组成一个逻辑表达式。例如:a&b、1|(!x) o逻辑表达式的值只有两个:

11、0和1。 o举例:当x为0时,x=5的值为多少。若a=4,则 !a 、a&-5 、4|0 的值分别为多少。 C世界中的加减乘除-运算符和表达式4.4.3 逻辑运算符的优先级和结合性 o 逻辑非(!)的优先级别最高,逻辑与(&)的优先级高于逻辑或(|)o 逻辑非(!)然后是算术运算符关系运算符逻辑与(&) 逻辑或(|)o 举例:5 3 & 2 | !8 =0)?1:-1 C世界中的加减乘除-运算符和表达式4.5 条件运算符 o条件运算符的结合性是“右结合”。o优先级别低于算术运算符、关系运算符和逻辑运算符 ;o例如:ab?a:cd?c:d 等价于 ab?a:(cd

12、?c:d) 【范例4-6】 条件运算符和表达式的应用。C世界中的加减乘除-运算符和表达式4.6 赋值运算符和表达式 4.6.1 赋值运算符 4.6.2 赋值表达式 4.6.3 赋值运算符的优先级和表达式 4.6.4 应用举例C世界中的加减乘除-运算符和表达式4.6.1 赋值运算符 基本的赋值运算符为:=复合赋值运算符分别为:+=、=、*= 、/=、%=、=、&=、=、!= C世界中的加减乘除-运算符和表达式4.6.2 赋值表达式o由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。o赋值表达式的一般格式为:变量=表达式 o例如:a=5; x=10+y;o对于赋值运算符说明如

13、下: 赋值运算符“=”与数学中的等式形式一样,但含义不同,注意区别。 注意“=”与“=”的区别,=是用来判断运算符两边的数据是否相等,而=作用是将右边表达式的值赋给左边的变量。 如:a=bc 与 a=bb?a:b 等价于 max=(ab?a:b) C世界中的加减乘除-运算符和表达式4.6.4 应用举例【范例4-7】 分析下面程序的运行结果。01 #include02 void main()03 04 int a,b,c;05 a=b=c=1;06 a+=b;/*等价于a=a+b*/07 b+=c;08 c+=a;09 printf( (1)%dn,ab?a:b); /*输出a,b二者的较大者*

14、/10 (a=b=c)? printf( AA):printf( CC); /*若a=b=c成立则输出AA,否则输出CC*/11 printf( n a=%d,b=%d,c=%dn,a,b,c);n C世界中的加减乘除-运算符和表达式4.6.4 应用举例【范例4-8】 若a=12,试写出表达式a+=a-=a*=a运算后a的值。a*=a a=a*a =12*12=144a-=144 a=a-144 =144-144=0a+=0 a=a+0=0+0=0C世界中的加减乘除-运算符和表达式4.7 自增、自减运算符自增运算符:+和自减运算符:- 。有以下几种形式:+i /*前置运算,相当于i=i+1*/

15、-i /*前置运算,相当于i=i-1*/i+ /*后置运算,相当于i=i+1*/i- /*后置运算,相当于i=i-1*/注注 意意:+、-中间不能有空格; 自增自减运算符只能用于变量,是单目运算符; 它们都具有“右结合性” 。C世界中的加减乘除-运算符和表达式4.7 自增、自减运算符若i=0; 则 j=+i; 与 j=i+;一样吗?举例:【范例4-9】 前置加和后置加的区别。说明:y=i+j;应该如何理解? 在C中,词法分析遵循“最长匹配”原则。在确保有意义的条件下,从左到右尽可能多地将若干个字符组成一个运算符,所以,上面的表达式就等价于y=(i+)+j。 C世界中的加减乘除-运算符和表达式4

16、.8 逗号运算符和表达式o 逗号运算符的功能是把两个表达式连接起来,使之构成一个逗号表达式。o 逗号运算符在所有运算符中是级别最低的。o 逗号表达式的一般形式为: 表达式1,表达式2 求解的过程是:先计算表达式1,再计算表达式2,最后整个逗号表达式的值就是表达式2的值 如:x=(i=10,i*5)C世界中的加减乘除-运算符和表达式4.8 逗号运算符和表达式【范例4-10】 逗号表达式的应用。01 #include02 void main()03 04 int a=2,b=4,c=6,x,y;05 y=(x=a+b),(b+c);06 printf(y=%d,x=%d,y,x);07 C世界中的

17、加减乘除-运算符和表达式4.8 逗号运算符和表达式说明: 逗号表达式一般形式中的表达式1和表达式2 也可以又是逗号表达式。因此可以把逗号表达式扩展为以下形式: 表达式1,表达式2,表达式n。 程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。 并不是在所有出现逗号的地方都组成逗号表达式。 C世界中的加减乘除-运算符和表达式4.9 运算符的优先级运算符的优先级共分为15级,如下表所示:运算符类型优先级运算符基本1() . : .* * &(引用)单目2* & new delete ! + - sizeof + 算术3* / %4+ 移位5 关系6 =7= !=位逻辑8&910|逻辑11&12|条件13? :赋值14= += = *= /= %

温馨提示

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

评论

0/150

提交评论