C语言程序设计 教学课件 ppt 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第3章 运算符和表达式

上传人:E**** 文档编号:89370185 上传时间:2019-05-24 格式:PPT 页数:103 大小:374.50KB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者  孟庆昌 陈海鹏 马鸣远 刘振英 第3章  运算符和表达式_第1页
第1页 / 共103页
C语言程序设计 教学课件 ppt 作者  孟庆昌 陈海鹏 马鸣远 刘振英 第3章  运算符和表达式_第2页
第2页 / 共103页
C语言程序设计 教学课件 ppt 作者  孟庆昌 陈海鹏 马鸣远 刘振英 第3章  运算符和表达式_第3页
第3页 / 共103页
C语言程序设计 教学课件 ppt 作者  孟庆昌 陈海鹏 马鸣远 刘振英 第3章  运算符和表达式_第4页
第4页 / 共103页
C语言程序设计 教学课件 ppt 作者  孟庆昌 陈海鹏 马鸣远 刘振英 第3章  运算符和表达式_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第3章 运算符和表达式》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 孟庆昌 陈海鹏 马鸣远 刘振英 第3章 运算符和表达式(103页珍藏版)》请在金锄头文库上搜索。

1、第3章 运算符和表达式,本章讲述C语言中各类运算符的表示形式、作用及使用要点,相应表达式的构成规则,运算符的优先级及结合性等。,C语言的表达式分为基本表达式和复杂表达式。 基本表达式是由以下单项构成的,即:标识符、常量、字符串字面量和用圆括号括起来的表达式。,3.1 表 达 式,将基本表达式通过运算符连接在一起,就构成复杂表达式。 例如:2+8,a+b,(xy)/a等。 由表达式还可组成更大的表达式。 例如:x=(a+b)%10,运算符是在一个数学运算中表示相应运算动作的一种符号。 运算符所作用的对象称作运算分量。,3.2 运算符及表达式,在C语言中,基本算术运算符有5个,它们是:+(加) (

2、减) *(乘) /(除) %(取模) 在使用时,它们都需要两个运算分量,如a+b,a*n等,所以,一般称为双目运算符。由算术运算符和运算分量组成的求值序列称作算术表达式。,3.2.1 算术运算符和算术表达式,在编程时要注意运算符“/”和“%”的区别: 运算符“/”可以作用于算术类型。 运算符“%”只能作用于整型量。 在功能上,a/b表示两个整数进行整除,其结果是舍弃余数后所得到的商值。 而a%b,是整除的余数,而不管商是多少。,例3-1 算术运算符应用示例。 /* arithmetic practice */ #include main( ) int a=99; int b=5; int c=

3、11;,int d=3; int result; result=ab; printf(“ab=%dn“,result); result=b*c; printf(“b*c=%dn“,result); result=a/b;,printf(“a/b=%dn“,result); result=a%b; printf(“a%b=%dn“,result); result=a%d+b/c; printf(“a%d+b/c=%dn“,result); return(0); ,输出结果是: ab=94 b*c=55 a/b=19 a%b=4 a%d+b/c=0,例3-2 计算有多个算术运算符的算术表达式。 #

4、include main( ) int x,a=3; float y; x=20+25/5*2; printf(“(1)x=%dn“,x);,x=25/2*2; printf(“(2)x=%dn“,x); x=a+4*56; printf(“(3)x=%dn“,x); x=a+4%56; printf(“(4)x=%dn“,x); x=3*4%6/5;,printf(“(5)x=%dn“,x); x=(7+6)%5/2; printf(“(6)x=%dn“,x); y=25.0/2.0*2.0; printf(“(7)y=%fn“,y); return(0); ,输出结果是: (1)x=30

5、(2)x=24 (3)x=11 (4)x=1 (5)x=0 (6)x=1 (7)y=25.000000,赋值运算符“=”,其简单的使用形式是: 变量=表达式 这种形式的表达式称作赋值表达式。 在使用赋值表达式时应注意以下几点:,3.2.2 赋值运算符和赋值表达式,(1)赋值运算符左边的量(通常称为左值)必须是变量,不能是常量或用上述运算符结合起来的表达式。例如, int a,b; 那么 a=b;b=8; 是正确的赋值形式;而 6=a;a+b=14; 等形式都是不对的。,(2)赋值运算可连续进行。例如, a=b=c=0 a=(b=(c=0) (3)赋值运算符的优先级比上述运算符的优先级都低。如果

6、在表达式中需要某些赋值动作先做,就必须把那部分用圆括号括起来。例如: a=(b=9) * (c=7),(4)赋值表达式的值等于右边表达式的值,而结果的类型由左边变量的类型决定。 (5)除了上述基本的赋值运算符之外,C语言中还提供了另外10个赋值运算符,它们是:+= = *= = %= = = = = =,这些运算符是把“运算”和“赋值”两个动作结合在一起,作为一个复合运算符来使用,所以,往往把它们称为复合赋值运算符。 例如:x +=2 其等效形式是:x=x+2。,表达式 x *=y+5 的等效形式是:x=x* (y+5)。 而表达式 x %=y10 的等效形式是:x=x%(y10) 复合赋值运

7、算符右边的表达式应作为一个整体对待。,C语言中提供了两个特殊的运算符:自增运算符+和自减运算符 。它们都是单目运算符,可以出现在运算分量的前面或后面。当出现在运算分量的前面时,例如+i, i,就称之为前缀运算符;当出现在运算分量的后面时,例如x+,y ,就称之为后缀运算符。由增量运算符和运算分量构成的表达式称为增量表达式,如+i,y 等。,3.2.3 增量运算符和增量表达式,自增运算符的作用是把一个变量的值增1,如+n或n+。 但必须指出,二者是存在差别的。 例如,m=+n;这条语句的执行过程等价于下述两条语句: n=n+1; m=n;,1自增运算符,而改为后缀加形式,即:m=n+;执行时,它

8、等价于下述两条语句: m=n; n=n+1;,一般说来,在表达式中出现前缀加的情况下,前缀加所作用的运算分量值先增1,然后进行其他级别较低的运算;而在表达式中出现后缀加的情况下,先以其运算分量的当前值参与其他级别较低的运算,最后该运算分量值才增1。,例3-3 显示前缀加和后缀加的区别。 #include main( ) int a,b,c; a=9; b=+a;,printf(“ (1) a=%d *b=%dn“ , a,b); a=9; c=a+; printf(“ (2) a=%d *c=%dn“ , a , c); return(0); ,运行后输出的结果是: (1)a=10*b=10

9、(2)a=10*c=9,自减运算符只是把增1变为减1。它也分前缀减和后缀减两种形式,如 n或n 。 对运算分量n本身来说,前缀减和后缀减作用相同。但与其他运算符一起使用时,二者作用就不同。,2自减运算符,如: m= n; 等价于:n=n1; m=n; 而 m=n ; 却等价于:m=n; n=n1;,在使用增量运算符时,还应注意以下几点。 (1)增量运算符有副作用。就是说,增量运算符作用在运算分量上,如+a,不仅可以向外提供一个值,而且还改变运算分量自身的值。,如果使用不当,就会产生意料之外的结果。例如: x=+i+i 或者 x=i+(+i),(2)+和 是单个运算符,不是通常意义上的两个“加”

10、号或者两个“减”号。因此,在录入源程序时不能在+或 中间插入空格。 (3)当表达式中连续出现多个加号(+)或减号()时,如何区分它们是增量运算符还是加法运算符呢? 例如: x=i+j;,C语言词法分析遵循“最长匹配”原则,即:如果在两个运算分量之间连续出现多个表示运算符的字符(中间没有空格),那么,在保证有意义的条件下,就从左到右尽可能多地将若干个字符组成一个运算符。,建议读者在录入程序时,在各个运算符之间加入空格,如i+ +j,或者使用圆括号,把有关部分括起来,作为整体处理。 (4)+和 只能作用在变量上,如+, 等,而不能用于常量和一般表达式(不是左值的表达式) 。,另外,增量运算符与运算

11、分量结合在一起构成的表达式带有自身赋值含义,但这种表达式不是左值,不能直接出现在赋值号左边。,C语言有完整的一组关系运算符,用于比较两个运算分量间的大小关系。这组运算符有6个,即: = = = = != 用关系运算符将两个运算分量连在一起构成的表达式称作关系表达式。根据运算符所作用的两个运算分量之间的指定关系是否成立,分别得到关系表达式的“真”、“假”结果。,3.2.4 关系运算符和关系表达式,在C语言中,没有表示“真”、“假”的逻辑量TRUE(真)和FALSE(假),就借用数值来表示。C语言中规定:以数值0表示“假”,以非0值表示“真”。对于关系表达式来说,结果真、假分别用1和0表示。 关系

12、运算只判定两个运算分量是否满足指定的关系,而不理采二者具体数值相差多少。,应注意,赋值号“=”与全等比较运算符“= =”的区别。 关系运算符的优先级低于算术运算符。这样,下列表达式: a+bc+d 应理解为:(a+b)(c+d)。,前4个关系运算符的优先级相同,后两个相等比较运算符的优先级也相同。但前者的优先级恰好比后者高一级。就是说,、=、=优先于= =和!=。但这6个运算符的结合性都是从左到右。,例3-4 分析下面程序的运算结果。 1 main( ) 2 3 int a,b,c; 4 a=b=c=10; 5 a=b= =c; 6 printf(“ a=%d ,b=%d ,c=%dn“ ,a

13、 ,b ,c); 7 a= =(b=c+*2);,8 printf(“ a=%d,b=%d ,c=%dn“ ,a ,b ,c); 9 a=bc=100; 10 printf(“ a=%d,b=%d ,c=%dn“ ,a ,b ,c); 11 return(0); 12 ,程序运行的输出是: a=1,b=10,c=10 a=1,b=20,c=11 a=0,b=20,c=11,条件运算符“?:”是C语言提供的惟一的三目运算符,它有3个运算分量。 由条件运算符组成的表达式简称条件表达式或三目表达式,其中3个运算分量都可以是表达式。条件表达式的一般构成形式是: 表达式1?表达式2:表达式3,3.2.5

14、 条件运算符和条件表达式,其计算顺序是:先求表达式1的值,若不为0,则计算表达式2,并将该值作为整个条件表达式的值;否则,就计算表达式3,并将该值作为整个表达式的值。 例如,要求出x和y中最大的一个,并赋予变量max。可使用如下语句: max=(xy)?x:y;,使用条件运算符时,还要注意以下几点: (1)条件运算符的优先级稍高于赋值运算符,但比其他运算符的优先级都低。 (2)三个运算分量不限于简单的算术表达式,甚至可以是函数调用。 (3)分析条件表达式时,关键是先找出“?”和“:”,把三个运算分量区分开,然后按一般方法进行计算。,例3-5 分析下面程序运行的结果。 1 main( ) 2 3

15、 int a ,b ,c ; 4 a=b=c=1; 5 a +=b;,6 b +=c; 7 c +=a; 8 printf(“ (1)%dn“ ,ab? a:b); 9 printf(“ (2)%dn“ ,ac? a :c+); 10 ( a=bc)? printf(“ AA“):printf(“ CC“); 11 printf(“ n a=%d , b=%d ,c=%dn“ ,a ,b ,c); 12 return(0); 13 ,在C语言中,逗号的用途主要有两种:一是作为分隔符,二是作为运算符。 (1)逗号分隔符 逗号(,)是C语言中的标点符号之一,用来分开相应的多个数据。 int a,b

16、,c; printf(“ A=%dt B=%dn“ ,a ,b); (2)逗号运算符,3.2.6 逗号运算符和逗号表达式,逗号作为运算符时,是把两个运算分量“连接”起来,使之构成一个逗号表达式。逗号表达式的一般形式是: 表达式1,表达式2 它的执行过程是:先计算表达式1,然后计算表达式2。整个逗号表达式的值是表达式2的值。,用逗号运算符可把多个表达式串起来,构成一个大的逗号表达式。其扩展形式是: 表达式1,表达式2,表达式n 各个表达式必须从左到右顺序执行,而整个逗号表达式的值是其中最右边表达式的值。 例如:x=(i=10,j=5,i*j),逗号运算符在所有运算符中级别最低。所以,在与其他运算符一起使用时,如

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号