C语言程序设计课件第3章100913.ppt
《C语言程序设计课件第3章100913.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件第3章100913.ppt(28页珍藏版)》请在三一文库上搜索。
1、2019/2/21,1,高级语言程序设计,第三章 表达式与运算符,主讲: 计算机学院 朱立华,2019/2/21,3,内容提要,表达式体现对数据的处理,由运算符和运算对象组成 掌握每种运算符的以下知识: 对运算对象的要求 运算符的结合性 运算符的优先级 运算结果的特性 有多种运算符的复杂表达式的计算顺序及计算结果 数据类型的自动转换规则及强制转换的方法,2019/2/21,4,表达式的组成,表达式实现对数据的处理,每个表达式都有唯一的值 表达式由运算对象和运算符组成 运算对象的种类:常量、变量、有返回值的函数调用、其它表达式 例:2 a rand() (2+a)*rand( ) 运算符:共34
2、种,分为15个不同的优先级,可以理解成是不带运算符的最简单表达式,常量表达式,变量表达式,函数表达式,带运算符的表达式,2019/2/21,5,左值与右值,每个表达式都有唯一确定的值,表达式不是左值就是右值 右值:只能出现在赋值号(=)右边的表达式 左值:不是右值的表达式就是左值 左值与右值的关系:右值只能出现在赋值号的右边;而左值既可以出现在赋值号的左边,又可以出现在赋值号的右边。左值可以取地址,右值不可以取地址. 例: 2 a rand() (2+a)*rand( ) a=b,常量表达式只能作为右值 例:a=2;(右值),变量表达式为左值,既可在赋值号左边也可以在右边,例:a=5;(左边)
3、 b=a;(右边),此函数表达式为右值 例:a=rand( )右值),此表达式只能作为右值 例:b=(2+a)*rand( ); (右值),赋值表达式只能作为右值 例:c=a=b;(右值) (a=b)=c;(出错),2019/2/21,6,算术运算符,算术运算符主要完成数值计算问题,具体如下表所列,例:int a=3,b,c; a+的表达式结果是3,变量a的值是4; +a的表达式结果是4,变量a的值是4; 因此,c=a+执行后, c的值是3,a的值是4 b=+a执行后,b的值是4,a的值也是4,例:int a=3; -a结果为-3,但是变量a的值仍为3 -2.45是2.45的相反数,例:int
4、 a=3,b,c; a-的表达式结果是3,变量a的值是2; -a的表达式结果是2,变量a的值是2; 因此,c=a-执行后, c的值是3,a的值是2 b=-a执行后,b的值是2,a的值也是2,例:int a=27,b=5,c; 表达式a/b结果是5,而不是5.4 表达式27.0/b结果是5.4 表达式27.0/5.0结果是5.4,例:int a=27,b=5,c; 表达式a%b结果是2, 表达式-a%b结果是-2 表达式27.0%b是错误的,例:表达式2+3结果是5 表达式2+3.0结果是5.0 表达式2.0+3.0结果是5.0,例:表达式3-2结果是1 表达式3.0-2结果是1.0 表达式3.
5、0-2.0结果是1.0,2019/2/21,7,算术运算符,程序3.1 赋值表达式及算术运算符示例 #include #include /包含随机函数rand的声明 int main( ) int a=5,b=6,c=7; printf(“%dn”,rand(); /显示随机数 print(“%dn“,a*(b+c)/2-2); /显示算术表达式的值 printf(“%dn“,a=b); /显示赋值表达式即a的值 b=rand()%10; /混合表达式赋0至9之间的1个随机数 printf(“%dn”,c=a=b); /显示赋值表达式的值即c的值 return 0; , 41 30 6 7,2
6、019/2/21,8,关系运算符,关系运算符主要完成表达式间的比较,比较的结果非真即假,C语言中无逻辑类型,故用1表示真,0表示假 任何类型的值,只要不等于0,在需要作出真假判断的场合就代表逻辑真。,结论:关系运算符的优先级低于算术运算符,例:c(a+b) 可以写成: ca+b,例:(ab)!=c 可以写成: ab!=c,例:a=(bc)可以写成: a=bc,例:(d=c)=(a+b)用括号表达式的含义清楚,2019/2/21,9,关系运算符,程序3.2 关系运算示例 #include #include /包含随机函数rand的声明 int main( ) int a=rand()%10; /
7、产生3个09的随机数 int b=rand()%10; int c=rand()%10,d; printf(“a=%d,b=%d,c=%dn”,a,b,c); /输出 printf(“%dn“,c=(a+b); return 0; , a=1,b=7,c=4 1 0,rand( )函数产生一个非负随机整数, 产生一个a,b范围的非负随机整数的方法是:a+rand( )%(b-a+1),2019/2/21,10,逻辑运算符,逻辑运算符主要完成更复杂的条件判断 逻辑表达式的最终结果只有两个:1表示真,0表示假。 任何类型的值,只要不等于0,在需要作出真假判断的场合就代表逻辑真,0代表逻辑假,几种运
8、算符的优先级:单目-算术-关系-逻辑与-逻辑或,例:!A 结果为0, !(2+35)结果为1,例:(ab)&(xy) 可以写成: ab&xy,例:(a=b)|(x=y) 可以写成: a=b|x=y,例:(!a)|(a!=b) 可以写成: !a|a!=b,例:表达字符变量ch是大写字母的正确条件为:ch=A&ch=Z,而不是: A=ch=Z,例:表达整型变量y是闰年的正确条件为:y%400=0|y%4=0&y%100!=0,2019/2/21,11,逻辑运算符,逻辑与、逻辑或运算符具有短路功能当第一运算对象的结果就是表达式结果时,第二运算对象不作计算 逻辑运算符的真值表及短路说明如下表所示:,逻
9、辑与短路总结:当第一对象的值为假时,第二对象无需计算。因为 无论第二对象结果是什么,最终表达式的值肯定为假 逻辑或短路总结:当第一对象的值为真时,第二对象无需计算。因为 无论第二对象结果是什么,最终表达式的值肯定为真,2019/2/21,12,逻辑运算符,假设已有定义:int a=5,b=6,c=7; 下表给出了&和|的短路功能,练习: 设有语句:int a = 3 , b =5, m=0; 则执行语句 a+b8&(m = a=3)后,m的值为_,整个表达式的值为_,2019/2/21,13,逻辑运算符,程序3.3 逻辑运算示例 #include #include /包含随机函数rand的声明
10、 int main( ) int a=1+rand()%50, b=1+rand()%50; int x=rand()/a, y=rand()/b; printf(“%d,%d,%dn“,a,b,ab); printf(“%d,%d,%dn“,x,y,xy); printf(“%dn“,(ab) , 42,18,0 150,1472,1 0 0 1,rand( )函数产生一个非负随机整数, 产生一个a,b范围的非负随机整数的方法是:a+rand( )%(b-a+1),2019/2/21,14,自增自减运算符,在算术运算符中已提到单目运算符自增(+)和自减(-) 自增自减运算符的几个特殊性: (
11、1)这两种运算符专门用于改变一个变量自身的值(增或减1),因此实质上具有赋值功能,运算对象只能是一个变量。 (2)对变量变化的时机取决于运算符与运算对象的相对位置,有前后之分,+a和a为前+(-),a+和a为后+(-) (3)前+或前是指先改变变量的值,再用变化后的值参加运算;后+或后是指先用未变化过的变量的值参加表达式的运算,最后再改变变量的值。共同点就是变量值肯定改变 (4)需要区分表达式的值和变量的值,大部分情况下不是一回事,但是如果仅仅改变变量而不用它运算,则前后无区别,2019/2/21,15,自增自减运算符,假设已有定义:int x=8,i=2,j=4; 下表列出了有自增自减运算符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件 100913
链接地址:https://www.31doc.com/p-2143095.html