




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章运算符和表达式第三章运算符和表达式常用运算符和表达式运算符的优先级和结合性第三章运算符和表达式第三章运算符和表达式 内容提要:内容提要:常用运算符和表达式 运算符按性质分类: (1)算数运算符: + - * / % (2)关系运算符: = = = != (3)逻辑运算符: ! & | (4)位运算符: | & (5)赋值运算符: = (6)条件运算符: ? : (7)逗号运算符:, (8)指针运算符: * & (9)求字节数运算符: sizeof (10)强制类型转换运算符: (类型名) (11)分量运算符: - . (12)下标运算符: (13)其它数运算符:函数调用运算符()常用运算
2、符和表达式运算符按运算所需对象(操作数)的个数分类:(1)单目运算符(仅对一个运算对象进行操作) + - ! -(2)双目运算符(需要两个操作数) + - * / % 等(3)三目运算符(需要三个操作数) ? : (唯一的一个三目运算符) p 表达式是运算符、变量、常量和函数的任意组合构成的式子。p 优先级是指表达式中包含多个运算符时,先进行优先级高的运算符操作,然后进行运算级低的运算符操作。当表达式中包含的几个运算符的优先级完全相同时,由运算符的结合性来决定它们的运算顺序。p 结合性同一优先级,自左向右,为左结合性,反之为右结合性。p 运算符的两侧数据类型不同,需要数据类型转换。常用运算符和
3、表达式- 有些运算符的结合方向为自右向左,如赋值运算符。算数运算符和算数表达式基本的算术运算符: (加法运算符。如:35、) (减法运算符,或负值运算符。如:52、3)* (乘法运算符。如:3*5) (除法运算符。如:53, 5.03 ) (模运算符,或称求余运算符,两侧均应为整型数据,如:74的值为3)。算数运算符和算数表达式例:12/5=2 12.0/5=2.4整型+(-、*、/)整型=整型实型+(-、*、/)实型=实型若一个操作数为整型,另一个操作数为实型,结果是实型算数运算符和表达式例:1/2= -5/2= -5/2.0=例:5%2= -5%2= 5/-2= 1%10= 5%1= 5.
4、5%2=0 -2-2.51-111 0类型转换p 同种数据类型的运算结果,还是该类型p 不同数据类型的运算结果,是两种类型中取值范围更大的那种例:计算2l+3*4.5p如果自动转换不符合需要,可以要求做特定类型转换。 (类型)表达式例:(int)(3.6*15.8)+42.032l3.0c4.513.515.5例:#include main() int m=5; printf(“m/2=%dn”, m/2); printf(“(float)(m/2)=%fn”, (float)(m/2); printf (“(float)m/2=%fn”, (float)m/2); 运行结果:m/2=2 (f
5、loat)(m/2)=2.000000 (float)m/2=2.500000类型转换算术表达式和运算符的优先级与结合性用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,称为算术表达式。运算符运算符类型类型含义含义优先级优先级结合性结合性-单目取负值1从右向左*双目乘法运算2从左向右/双目除法运算从左向右%双目求余运算从左向右-双目减法运算3从左向右例: (-16/3*2+1)%6=-3算数运算符和表达式函数名函数名功能功能函数名函数名功能功能sqrt(x)x平方根,x大于等于0exp(x)ex的值fabs(x) x的绝对值pow(x,y)xy的值log(x)lnx的值
6、sin(x)sinx的值,x为弧度值log10(x) lgx的值cos(x)cosx的值,x为弧度值使用标准数学函数时,程序开头必须加上编译预处理命令。#include例:给出三角形的三边长,求三角形面积。 解题思路:假设给定的三个边符合构成三角形的条件 关键是找到求三角形面积的公式 公式为: 其中s=(a+b+c)/2#include #include /调用数学函数加此行int main ( ) double a,b,c,s,area; a=3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); / 函数 prin
7、tf(a=%ftb=%ft%fn,a,b,c); printf(area=%fn,area); return 0; 实验p43 面积: 体积:#include #include #define pi 3.14159main () double r, surf, volu; printf(“input r:”); scanf (“%lf”, &r) ; surf=4*pi*pow(r,2); volu=4.0/3.0*pi*pow(r,3); printf(“surf=%lfn, surf); printf(“volu=%lfn, volu); 运行结果:运行结果:input r:.5.0inp
8、ut r:.5.0surf=314.159000surf=314.159000volu=523.598333volu=523.598333 #include #define pi 3.14159main () double r, surf, volu; printf(“input r:”); scanf (“%lf”, &r) ; surf=4*pi*r*r; volu=4.0/3.0*pi*r*r*r; printf(“surf=%lfn, surf); printf(“volu=%lfn, volu); 算数运算符和表达式常见错误:(1)将*省略,或者写成。(2)使用或者限定表达式的运算顺
9、序。只能用()(3)使用数学函数运算时,未将参数()括起来,且未注意其定义域要求参数的单位。(如:三角函数参数的单位是弧度,不是角度,开平方函数的参数不能小于0等)说明:(1)两个整数相除的结果仍为整数,舍去小数部分的值。(2)求余运算先定参与运算的两个操作数为整数。(3)运算符的两侧数据类型不同,先自动进行类型转换,使二 者具有同一种类型,然后进行运算。赋值运算符与表达式赋值运算符含义是将一个数据赋给一个变量三种赋值形式:(1)简单赋值变量名=表达式 a=c+d赋值表达式左边必须是变量,而不能是常量或者表达式,右边是合法的c语言表达式。 例:i+3=i a*b=c*8 5=x 错误赋值表达式
10、中的“表达式”,又可以是一个赋值表达式(2)多重赋值变量1=变量2=变量n=表达式等价于:变量1=(变量2=(=(变量n=表达式)a=b=7+1赋值运算符与表达式(3)复合赋值变量 复合赋值符表达式等价于:变量=变量 赋值符 表达式p 在赋值符 “=”前加上某些运算符,可以构成复合赋值运算符,复合赋值运算符可以构成赋值表达式p c语言规定可以使用10种复合赋值运算符+=、-=、*=、/=、%/、 =、|=、 =、&= 赋值运算符与表达式运算符运算符例子例子等价形式等价形式+=a+=ba=a+b-=a-=ba=a-b*=a*=ba=a*b/=a/=ba=a/b%=a%=ba=a%b赋值运算符与表
11、达式例:已知变量a=3,求分别执行下列语句后, 变量a的值分别是多少 a+=a-=a*a; a+=a-=a*=a;常见错误:没有将复合赋值运算符右侧的表达式作为一个整体参与运算例:n*=m+1n=n*m+1 (错)n=n*(m+1) (对)增1和减1运算符说明:p 自增、自减运算符+ -p 作用:使变量值加1或减1p 种类: 前置 +i, -i (在使用i之前,先使i的值加(减)1) 后置 i+,i- (先使用i值,再使i的值加(减)1 )增1和减1结合方向:自右向左增1和减1都是单目运算符,只需一个操作数,操作数只能是变量,不能是常量和表达式。如:5+,(a+b)+增1和减1运算符运算符运算
12、符等价形式等价形式+xx=x+1x+x=x+1-xx=x-1x-x=x-1语句语句等价语句等价语句m=n+m=n;n=n+1;m=n-m=n;n=n-1;m=+nn=n+1;m=n;m=-nn=n-1;m=n;p +或-作为前缀或后缀运算符使用时,对变量而言,结果是一样的,但对于表达式而言,结果不一样。设a=5(1)b=+a (2)b=a-(3)b=-a(4)b=a+a=6, b=6a=4, b=5a=4, b=4a=6, b=5例 j=3; k=+j; j=3; k=j+; a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=3,j=4/c=20,a
13、=4/c=15,a=4例:若n=3,则执行完m=-n+后,m, n分别是多少m=-(n+)m=-nn=n+1m=-3n=4例:j=+i-2等价于:i=i+1; j=i-2; j=i+-2等价于: j=i-2; i=i+1;增1和减1运算符逗号运算符和逗号表达式p 逗号运算符:,p 作用:连接两个表达式p 优先级:所有运算符中优先级最低p 结合方向:从左向右p 形式:表达式1,表达式2,表达式n逗号表达式的值:等于表达式n的值求解过程:先求表达式1,再求表达式2,依次求下去,直到求出表达式n,整个逗号表达式的值就是表达式n的值例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a=3,6
14、*3)/a=15,表达式值60/a=15,表达式值20/赋值表达式,表达式值18,x=18注意:并不是任何地方出现的逗号,都是逗号运算符。很多情况下,逗号仅用作分隔符。逗号运算符和逗号表达式关系运算符与表达式运算符运算符类型类型含义含义优先级优先级结合性结合性双目大于从左向右=双目大于等于从左向右=双目等于2从左向右!=双目不等于从左向右关系运算:比较运算,比较两个操作数,看是否满足给定的关系。用于简单的条件判断。关系运算符与表达式例:(1)3.243-1等价于:a=(1+2)(3-1)关系运算符与表达式例: 0 0 2=32=3=5 z=3+1=2+3-1=5+6*2等价于z=(3+1)=(
15、2+3-1)=(5+6*2)z=4=4 = (无空格) = = (关系运算和赋值运算混淆,两者含义不同)(3)误以为语法上合法的关系表达式在逻辑上一定是正确的。 例:若a=3,b=2,c=1,则abc。ab11c0逻辑运算符与表达式运算符运算符类型类型含义含义优先级优先级结合性结合性!单目逻辑非1从左向右&双目逻辑与2从左向右|双目逻辑或3从左向右逻辑运算也成布尔运算,用于复杂的条件判断a取值取值b取值取值!aa&ba|b非0非0011非000010非010100100逻辑运算真值表(表征逻辑事件输入和输出之间全部可能状态的表格)(1)&两个操作数都为真时,结果为真。(2)|只要有一个操作数为
16、真,结果为真。例如:若a=3,b=2,c=1,则abc (ab)&(bc)逻辑运算符与表达式在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。p & :若第一个操作数为0时,则第二个操作数不在计算。p |:若第一个操作数为非0,则第二个操作数不在计算。 条件运算符与条件表达式有两个符号:?:,它与三个操作数组成三元运算。一般形式: ? :求值规则和表达式的值:求解求解表达式表达式1 1真真( (非非0)0)求解求解表达式表达式2 2假假(0)(0)求解求解表达式表达式3 3表达表达式式的值的值例 : int max,a=5;b=3;max=ab?a:b 优先级:逻辑 条件 赋值结果:ma
17、x=5, a=5,b=3位运算符与表达式运算符运算符类型类型含义含义优先级优先级结合性结合性单目按位取反1从右向左双目左移位,右移位2从左向右&双目按位与3从左向右双目按位异或4从左向右|双目按位或5从左向右位运算真值表a取值取值b取值取值a&ba|baba000001010111100110111100左移位xn,把x的每一位向右移n位,左边空位补零。从一端移走的不移入另一端,移出的位信息丢失运算量只能是整型或字符型的数据,不能为实型数据。位运算符与表达式“按位与”运算符() 参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。即: 00
18、0,010,100,111例:35并不等于8,应该是按位与运算: 00000011(3)& 00000101(5) 00000001(1) 注意:注意:如果参加&运算的是负数(如-3&-5),则要以补码形式表示为二进制数,然后再按位进行“与”运算。按位与的用途:p 清零若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合以下条件:原来的数中为的位,新数中相应位为0。然后使二者进行运算,即可达到清零目的。p 取一个数中某些指定位 如有一个整数(2个字节),想要取其中的低字节,只需将与8个1按位与即可。 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0a
19、bc0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 10 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0“按位或”运算符(|)两个相应的二进制位中只要有一个为1,该位的结果值为1。即: 0|00,0|11,1|01,1|11例: 060|017,将八进制数60与八进制数17进行按位或运算。 00110000| 00001111 00111111 应用:按位或运算常用来对一个数据的某些位定值为。例如:如果想使一个数的低4位改为1,只需将与017进行按位或运算即可。“异或”运算符()异或运算符也称xor运算符。它的规则是:若参加运算的两个二进制位同号则结果为0(假) 异号则
20、结果为1(真)即: 00=0,01=1,10=1, 11=0即: 071052=023 (八进制数) 00111001 00101010 00010011 例:运算符应用:p 使特定位翻转设有01111010,想使其低4位翻转,即1变为0,0变为1。可以将它与00001111行运算,即: 01111010 00001111 01110101运算结果的低4位正好是原数低4位的翻转。可见,要使哪几位翻转就将与其进行运算的该几位置为1即可。p 与0相,保留原值因为原数中的与0进行运算得,00得0,故保留原数。例如:01200=012 00001010 00000000 00001010p交换两个值例
21、如:3,4。想将和的值互换,可以用以下赋值语句实现:ab;ba;ab; 011()100 111(ab的结果,a已变成7)() 100 011(ba的结果,b已变成3)() 111 100(ab的结果,a已变成4)“取反”运算符()是一个单目(元)运算符,用来对一个二进制数按位取反,即将0变1,将1变0。例如,025是对八进制数25(即二进制数00010101)按位求反。11101010作用:加密处理初始字节: 00000101一次求反后: 11111010二次求反后: 00000101左移运算符()左移运算符是用来将一个数的各二进制位全部左移若干位。其右边空出的位用0填补,高位左移溢出则舍弃该高位。例如:a=)右移运算符是a2表示将a的各二进制位右移2位0。例:a2 a=017时,a的值用二进制形式表示为00001111,舍弃低2位11: a2=00000011右移一位相当于除以右移一位相当于除以2 2 右移右移n n位相当于除以位相当于除以2n2n。 在右移时,需要注意符号位问题:p 对无符号数,右移时左边高位移入0;p 对于有符号的值, - 如果原来符号位为0(该数为正),则左边也是移入0。 - 如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的系统移入1。移入0的称为“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 请你给青蛙一个吻课件
- 误吸的评估及处理
- 红酒杯知识培训方案模板课件
- 2025【合同范本】设备租赁合同
- 2025养殖场地租赁合同范本
- 2025合作合同协议范本
- 红色会说话课件
- 欧洲文化的演进史脉络概览教案
- 2025企业员工试用合同
- 诗经二首课件介绍
- 煤气设施检查管理制度
- 信息认证管理制度
- 电针参数优化研究-洞察及研究
- 色素痣诊疗专家共识(2025版)解读
- 中医体质辨识与调养课件
- DBJD25-68-2019甘肃省安装工程预算定额地区基价第十一册刷油、防腐蚀、绝热工程(不含税)
- 2025年金匮要略考试练习题库含答案
- 云南省昆明市寻甸县2024-2025学年八年级下学期期中考试数学试卷
- 转让民宿协议书范本
- 国企金融考试题及答案
- 2024-2025学年全国版图知识竞赛(中学组)考试题库(含答案)
评论
0/150
提交评论