版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章运算符与表达式信息技术组孙颖北师大附属杭州中学前言了解程序中使用的数据类型后,还要懂得如何操作这些数据,所以掌握C语言中各种运算符及其表达式的应用是必不可少的。
C语言的主要特点就是拥有丰富的运算符和表达式。本章内容是:表达式的概念,运算符及相关表达式的使用。其中包括赋值运算符、算数运算符、关系运算符、逻辑运算符、位逻辑运算符、逗号运算符、条件运算符及复合赋值运算符。目录1.表达式2.赋值运算符与赋值表达式3.算术运算符与表达式4.关系运算符与表达式5.逻辑运算符与表达式6.位逻辑运算符与表达式7.逗号运算符与表达式8.条件运算符与表达式9.复合赋值运算符10.小结实战5.1 表达式表达式是C语句的主体。在C语言中,运算符、变量和函数一起组成表达式,表示各种运算功能。根据表达式内含有操作符的个数,我们把表达式分为:简单表达式——只含有一个操作符复杂表达式——含有两个或两个以上操作符关于表达式关于逗号逗号既可以当作分隔符,又可以用在表达式中关于逗号1.2.3.4.用于间隔说明语句中的变量或函数中的参数。逗号是分隔符将若干独立的表达式连接在一起。逗号在表达式中使用逗号分隔变量:inta,b;使用逗号分隔参数:Printf(“abc%d”,c);分隔符范例for(i=0,j=100;i<j;i++,j--){k=i+j;}表达式范例小测试试一试你的力有4个int变量,则a=(b=1,c=2,d=3)计算后,a的值是A.1B.2C.3D.6若有代数式,则不正确的C语言表达式是a/b/c*e*3 B.3*a*e/b/cC.3*a*e/b*c D.a*e/c/b*312“=”就是赋值运算符。它的功能是为变量赋值。如i=20;就是把常量20这个值赋给i这个变量。当然,我们也可以把一个表达式赋值给某变量,这在我们以前的课里早已经实践过了。关于赋值运算符5.2 赋值运算符与赋值表达式5.2 赋值运算符与赋值表达式自动类型转换将实型数据赋值给整型变量,小数部分将被舍弃inta;a=1.23456;printf(“%d”,a);将整型数据赋值给实型变量,会自动添加小数位floata;a=5;printf(“%f\n”,a);125.2 赋值运算符与赋值表达式注意:!!!当将比较短的数值类型变量的值赋给比较长的数值类型变量数据信息不会丢失反之,数据就会降低级别表示,当超出可表示范围的时候数据将被截断12floati=10.1f;intj=i;想一想,编译器会做出什么反应?5.2 赋值运算符与赋值表达式强制类型转换强制类型转换的一般形式:(类型名)表达式 floati=10.1f; intj=(int)i;注意,强制或自动类型转换都不改变变量的类型无论是强制类型转换,还是自动类型转换,它都只是因本次运算需要而对变量的数据长度作临时性转换。在上面的程序中,i仍然是float类型的变量,只是在赋值给j的这个过程中,产生了一个int类型的临时变量,它的值等于i的整数部分,完成本次运算后,这个临时变量就消亡了。12floati=10.1f;intj=i;我们可以对上面这段程序做强制类型转换。小测试试一试你的力以下符合C语言语法的赋值表达式是:A.a=1+b+c=a+2B.a=1+b,c=a+2C.a=1+b,c++,d+2D.a=1+b++=c+2a和b为double变量,a=1.2、b=3.4,则(int)a+b/b的值是:4 21.2000002.00000012+ 单目正- 单目负*
乘法/ 除法% 取模+ 加法- 减法这里需要说明的是除法和取模运算。除法:7/2=3,-5/3=-1取模:取模运算符%的两侧均为整数,用于计算两数相除的余数。7%2=1,-8%3=-2注意:单目正运算符是冗余的,只与单目负运算符构成一对而存在。单目运算符不会改变任何事情,例如不会把一个负值表达式改为正。算术运算符5.3 算术运算符与表达式用算术运算符和括号将运算对象(操作数)连接起来,符合C语言规则的式子,称为算术表达式。运算对象:常量、变量及函数等。举例:a=(3+5)/b;c=d-e+1;k=i*j;注意!!!如果在+、-、*、/运算的两个数中有一个是实数,则结果便为double型。算术表达式5.3 算术运算符与表达式范例:用算术表达式计算摄氏温度5.3.3 优先级与结合性具体介绍算术运算符的优先级乘法、除法、取模运算的优先级高于加减法提高优先级的方法是给加减法添加括号()()在运算符中具有最高优先级
算术运算符的结合性优先级相同时,结合方向为“自左向右”12范例:++i
代表i自增1以后再使用i; --i 代表i自减1以后再使用i;i++ 代表先使用i的值再自增1; i-- 代表先使用i的值再自减1。自增++和自减--5.3.4
自增自减运算符5.3.4
自增自减运算符小试牛刀定义变量a,为其赋初值10,使用printf()函数显示-a++两次上机演练
上机演练1 求解二元一次不定方程求解二元一次不定方程ax+by=c的解,其中a、b、c要求从键盘中输入,其中a>0,b>0且a>=b。
上机演练2
可逆素数可逆素数是指将一个素数各位数字的顺序倒过来构成的反序数仍然是素数。按以上叙述求所有的4位素数。用来判断操作数的大小关系。符号
功能> 大于>= 大于或等于< 小于<= 小于或等于== 等于!= 不等于关系运算符常用于两个值的比较,比较结果是一个逻辑值,满足条件,结果为真,否则为假。真返回1,假返回0。关系运算又叫比较运算5.4 关系运算符与表达式关系表达式中,关系运算符两侧的表达式可以是算术表达式、关系表达式、逻辑表达式、赋值表达式及字符表达式。比较后,会返回一个真值1或假值0。x>y;‘x’>’y’;a+b>b+c;(m=4)<(n=8);(i>j)!=(j<k);注意!!!在判断时,一定要注意等号运算符==的使用,不能和赋值运算符=弄混。如右上方的代码,很多同学都写过,原本目的是想判断Amount变量是否等于100,在等于100的时候执行if条件内的复合语句。但实际上,这是一个对变量Amount赋值100的式子,它的结果是非0,即为真。因此,这个if内的复合语句将始终被运行,程序将永远遇不到else的状态。这就是逻辑错误。关系运算符连接两个表达式、符合C语法规则的式子:关系表达式5.4.2 关系表达式关系运算符<、<=、>、>=的优先级相同==和!=的优先级相同前4种运算符优先级高于后两种。它们的结合性都是从左向右依次结合。看左边的代码。!=的优先级要高于=这个赋值运算符所以这个条件判断最后成了赋值运算,结果将同编程者初始意愿相悖。正确的写法应该是:if((Number=NewNum)!=10)注意!!关系运算符的优先级要低于算术运算符关系运算又叫比较运算5.4.3 优先级与结合性关系运算符的使用:算术运算符关系运算符赋值运算符大于大于优先级沿箭头方向递减小测试试一试你的力用1代表真,用0代表假。假设a=3,b=2,c=1,则下列表达式值为0的是:A.a+c>bB.d=a>b>cC.a>cD.(a>b)==c有运算符>、=、%,将它们按优先级由低到高排列应该是:12&& 逻辑与运算符:一假必假|| 逻辑或运算符:一真必真!
逻辑非运算符:真假相对关于优先级:!的优先级,大于&&的优先级,大于||的优先级综合运算优先级:!高于算术运算符高于关系运算符高于&&和||高于赋值运算符逻辑运算符5.5
逻辑运算符与表达式a=5,b=7,则a&&b的值=1。a=5,b=7,则a||b的值=1。a=5,则!a的值=0。&&运算,
第一个操作数被判定为假,则系统将不再判定或求解第二个操作数。||运算,
第一个操作数被判定为真,则系统将不再判定或求解第二个操作数。一些范例5.5
逻辑运算符与表达式自左向右。结合性5.5.3
优先级和结合性上机演练
上机演练3
判断闰年从键盘上输入一个表示年份的整数,判断该年份是否是闰年,判断后的结果显示在屏幕上。以前在实战里涉及过闰年的算法,所以这一次不能查网络,试着自己写出来吧。上机演练
上机演练4
黑纸与白纸有A、B、C、D、E5个人,每人额头上都贴了一张黑色或白色的纸条。5人对坐,每人都可以看到其他人额头上的纸的颜色,但都不知道自己额头上的纸的颜色。5人相互观察后,A说:“我看见有3个人额头上贴的是白纸,一个人额头上贴的是黑纸。”B说:“我看见其他4人额头上贴的都是黑纸。”C说:“我看见有一个人额头上贴的是白纸,其他3个人额头上贴的是黑纸。”D说:“我看见其他4人额头上贴的都是白纸。”E说:“我不发表观点。”现在已知额头贴黑纸的人说的都是谎话,额头贴白纸的人说的都是实话,问这5个人谁的额头上贴的是黑纸,谁的额头上贴的是白纸。& 按位与
双目| 按位或
双目
^ 按位异或
双目~ 取补
单目例如:If(a&b)这个判断就是让a和b按位匹配。位逻辑运算是C语言里很特别的一部分,它可以实现位的设置、清零、取反、取补操作。它能实现许多汇编语言才能实现的功能。程序员用它们来作为开关标志。位逻辑运算符5.6
位逻辑运算符与表达式小测试试一试你的力以下是单目运算符的是:A.&B.|C.^D.~在C语言中,&作为双目运算符时表示的是:12一般形式是:表达式1,表达式2,……,表达式n求解过程:先求表达式1,再求表达式2,一直求解到表达式n。整个逗号表达式的值是表达式n的值。小范例:K=1+1,2+2,3+3;最后它的值是多少?K=(1+1,2+2,3+3);最后它的值是多少?注意!!逗号运算符的优先级是最低的。逗号运算符又名顺序求值运算符5.7
逗号运算符与表达式自左向右。结合性5.7
逗号运算符与表达式小测试试一试你的力在“inta,b,c;”语句中,逗号的作用是:在声明变量的时候,逗号作为分隔符,用来分隔声明变量。这个时候,它不是运算符。表达式“a=1,4+5,8”的值是:12结合方式也是由左向右表示方法:以上语句简化后就是条件运算符max=(a>b)?a:b;C语言中唯一的三目运算符5.8
条件运算符与表达式小测试试一试你的力假设变量a=3,b=4,c=5,则表达式a>3?a+c:b>4?b+c:c它的值是多少?下列运算符中,又一个运算符与其他运算符不同,它是:12A、=B、&&C、?:D、%如+=、-=、*=、/=、%=、&=等形式:变量双目运算符=表达式例如:i+=3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度建筑工程材料采购与施工合同范本
- 04年网络安全维护合同
- 汽水制造机市场发展现状调查及供需格局分析预测报告
- 2024年度幼儿园特色课程开发合同
- 2024年度技术服务合同标的为云计算服务
- 2024年度保障性住房租赁合同优惠政策
- 编码和解码装置市场发展现状调查及供需格局分析预测报告
- 2024年度企业形象设计及推广合同
- 2024年度供应链管理系统开发及运维合同
- 04版智能托盘研发与租赁合同
- 高考模拟作文写作:“如何辨别取舍信息”导写(附:写作指导及范文点评)
- 四年级数学老师家长会ppt
- 重医大临床麻醉学课件01绪论
- 喜马拉雅有声书用户行为市场报告课件
- 2009-2022历年江苏省苏州工业园区管委会直属事业单位统一公开招聘人员《综合知识与能力素质》试题(管理类)含答案2022-2023上岸必备汇编4
- ACS510变频器参数表
- G344项目临建工程施工方案-12号定稿
- 双绞线链路测试报告
- 小学数学人教四年级上册(2022年新编)平行四边形和梯形认识平行四边形
- 少先队主题班会工作汇报模板009号课件
- 电气设备常见故障分析
评论
0/150
提交评论