




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,第3章表达式和运算符(3),.,2,3.5运算符和表达式,3.5.1运算符的种类、优先级和结合性3.5.2算术运算符和算术表达式3.5.3赋值运算符和赋值表达式3.5.4增量运算符和增量表达式3.5.8逗号运算符和逗号表达式,.,3,3.5运算符和表达式,.,4,运算符和表达式,优先级是指表达式中包含多个运算符时,先进行优先级高的运算符操作,然后进行优先级低的运算符操作;当表达式中包含的几个运算符的优先级全相同时,由运算符的结合性来决定他们的运算顺序。结合性:同一优先级,自左向右,为左结合性,反之为右结合性。,初等运算符(、()、.、-)单目运算符算术运算符关系运算符逻辑运算符(不包括逻辑非运算符!)赋值运算符逗号运算符,.,5,3.5.2算术运算符和算术表达式,1、基本的算术运算符:(加法运算符,或正值运算符。如:、)(减法运算符,或负值运算符。如:、)*(乘法运算符。如:*)(除法运算符。如:)(模运算符,或称求余运算符,两侧均应为整型数据,如:的值为)。算术运算符的优先级别:*、/、%优先于+、(*、/、%不分),()级别最高,单目运算符优先双目运算符如24,.,6,算术运算符和算术表达式,2、算术表达式(1)表达式由常量、变量、函数和运算符组成的式子称为表达式例:计算圆面积的语句s=3.14159*r*r;该语句中r,3.14159,3.14159*r,3.14159*r*r,s=3.14159*r*r都是表达式*是运算符,3.14159是常量,s是变量(2)表达式的求值规则,按照运算符的优先级和结合性的规定顺序进行。一个表达式有一个值及其类型,.,7,算术运算符和算术表达式,(3)算术表达式是由算数运算符和操作数组合成的式子,算术表达式用于各类数值运算。除求余运算符%外,运算对象可以是整型,也可以是实型。如:(-b-sqrt(d)/(2.0*a)运算对象包括常量、变量、函数等。一个常量、变量都可作为一个表达式。例:以下是合法的算术表达式:a*b/c-1.5+a3*x+1.0/y10*sqrt(x)(x+y)%(x+b-c/d)100 x,.,8,算术运算符和算术表达式,说明:1)“%”是求余运算。a%b计算a除以b以后的余数,也是a模b的值。它要求两个运算对象都是整型量,其结果也是整型量。当运算量为负数时,所得结果的符号与被除数(a)相同。如:17%-3=2-19%4=-3-15%-7=-15%1.5是非法的算术表达式2)除法运算符“/”进行求商运算。对于不同类型的运算对象,除法表达式计算结果的类型也会不同。例:计算x/y如果x,y为整型,小数部分舍去,没有四舍五入如果x,y中有一个为实型量,则x,y都被化为double类型进行计算,结果为double,.,9,算术运算符和算术表达式,运算实例:x,y为整型量:5/2结果为2,整型量2/5结果为0,整型量x,y其中一个为实型量5.0/2或5.0/2.0或5.0/2.0结果为2.5,实型量,.,10,练习:,例1/2=-5/2=-5/2.0=,例5%2=-5%2=5%-2=1%10=5%1=5.5%2=,0-2-2.5,1-1110,例:a*b/c-1.5+a(x+y)%(x+b-c/d),例如(16/32+1)%6的值_.计算方法:16/3值为5,然后52+l值为9,最后9%6值为3。,.,11,算术运算符和算术表达式,3)双目运算符两边的运算类型必须一致才能进行操作,所得结果类型与运算类型一致;如:1.0/2.0=0.51/2=04)如果类型不一致,系统将自动把两边转换成相同类型后进行运算;如:1.0/2=0.51/2.0=0.5整型转实型短整型转长整型有符号转无符号5)C语言中所有实数的运算均以双精度方式进行,若是单精度数,则在尾数部分补0,使之转化为双精度;,.,12,例:将数学式改写成算术表达式一般数学式算术表达式a(b+c)+dac(a*(b+c)+d)*a*c3.14159*r*r/2.0 x/(x+y)+1.0/x*y,算术运算符和算术表达式,.,13,基本运算符实例,基本运算符实例:main()inta,b,c1,c2;a=3,b=7;c1=b/a;c2=b%a;printf(“c1=%dtc2=%dn”,c1,c2);c1=a/b;c2=a%b;printf(“c1=%dtc2=%dn”,c1,c2);,.,14,标准库函数调用,对于某些数学运算,如求平方根,指数,对数运算,C语言中有标准库函数对其进行计算。调用格式:函数名(参数,参数,)其中函数名由系统提供,不同C编译系统,提供的函数名不同,使用时需查阅相关手册。调用函数时,参数的类型必须与系统规定一致调用标准库函数之前,通常要用预编译命令“#includemath.h”将所需要的库函数信息包含到用户源文件中,.,15,使用数学库函数,在使用数学库函数以前,需使用编译命令#include“math.h”例:计算x(2+xy)的值#include“math.h”main()doublex,y;x=5.0;y=7.0;printf(“z=%fn”,x*(2.0+pow(x,y);,.,16,算术表达式中数据类型的转换,3、各类型数值数据的转换当表达式中的各类数值型数据参与混合运算时,要进行类型转换下面表达式合法:1+3.14159+0+A转换方式自动转换:数据类型自动由低级向高级转换。强制转换:将表达式的运算结果强制转换成指定的数据类型。,.,17,算术表达式中数据类型的转换,自动转换规则:,低,高,自动,自动,.,18,算术表达式中数据类型的转换,.,19,练习:,1若有定义:inta;则语句a=(4*5)+4%5;运行后,a的值为()2设double型变量a,b,c,e均有值;对代数式(3ae)/(bc),不正确的C语言表达式是()。(A)a/b/c*e*3(B)3*a*e/b/c(C)3*a*e/b*c(D)a*e/c/b*33.P593.33.4,.,20,3.5.3赋值运算符和赋值表达式,1、赋值运算符和赋值表达式赋值表达式的一般格式为:变量=表达式说明:1)赋值运算符左边必须是变量而不能是常量或表达式,右边是合法的c语言表达式;例:j+3=ja*b=c*45=xx+1=y*a+3错误2)赋值表达式的值是赋值号左边变量被赋值后的值;正确的表示形式:x=10 x=yn=n+13)赋值语句可以连续进行a=b=7+1等价于a=(b=(c=0),.,21,赋值运算符和赋值表达式,2、复合的赋值表达式算术运算符“+-*/%”和赋值运算符”=“结合+=:a+=b+3,等价于a=a+(b+3)-=:a-=b+3,等价于a=a-(b+3)*=:a*=b+3,等价于a=a*(b+3)/=:a/=b+3,等价于a=a/(b+3)%=:a%=b+3,等价于a=a%(b+3)=,%un,b,a);a=65534u;b=a;printf(%d-%un,b,a);,结果:-1-65535-2-65534,.,30,赋值运算符和赋值表达式,赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。一般形式为:例如:“5”是一个赋值表达式,.,31,赋值运算符和赋值表达式,对赋值表达式求解的过程是:求赋值运算符右侧的“表达式”的值;赋给赋值运算符左侧的变量。例如:赋值表达式“=3*5”的值为15,执行表达式后,变量a的值也是15。注意:一个表达式应该有一个值左值(lvalue):赋值运算符左侧的标识符变量可以作为左值;而表达式就不能作为左值(如a+b);常量也不能作为左值,,.,32,赋值运算符和赋值表达式,请分析下面的赋值表达式(a=3*5)=4*3分析:先执行括弧内的运算,将15赋给a,然后执行4*3的运算,得12,再把12赋给a。最后a的值为12,整个表达式的值为12。可以看到(a=3*5)出现在赋值运算符的左侧,因此赋值表达式(a=3*5)是左值注意:在对赋值表达式(a=3*5)求解后,变量a得到值15执行(a=3*5)=4*3时,实际上是将4*3的积12赋给变量a,而不是赋给3*5不能写成:a=3*5=4*3,.,33,赋值运算符和赋值表达式,赋值表达式也可以包含复合的赋值运算符。如:a+=a-=a*a分析:此赋值表达式的求解步骤如下先进行“*”的运算,相当于*,a的值为144132。再进行“”的运算,相当于=a+(-132),a的值为132-132-264。,.,34,赋值运算符和赋值表达式,补充例题main()inti=5;i+=i*=i+6;printf(i=%dn,i);,分析表达式i+=i*=i+6的执行过程:结合方向是从右到左,先计算i+6的值为11;计算后i的值不变仍为5;再计算i*=11,相当于i=i*11,因此i=5*11,i的值变成55;最后计算i+=55,相当于i=i+55,因此i=55+55,i的值最后变成110。,.,35,赋值运算符和赋值表达式,补充例题main()inti=-5,j=0 x9961,k;unsignedintu;unsignedcharch;u=i;ch=j;k=ch;printf(u=%x,u=%u,ch=%c,k=%dn,u,u,ch,k);运行结果:u=fffb,u=65531,ch=a,k=97,.,36,赋值运算符和赋值表达式,例:赋值语句程序实例main()inta,b,c;a=b=c=9;printf(“a=%d,b=%d,c=%dn”,a,b,c);a=(b=4)+(c=6);printf(“a=%d,b=%d,c=%dn”,a,b,c);a+=b+c;printf(“a=%d,b=%d,c=%dn”,a,b,c);a+=a-=a*=a;a+=a-=a+a;printf(“a=%dn”,a);,999,1046,2046,0,.,37,赋值运算符和赋值表达式,4、强制类型转换格式:(数据类型说明符)(表达式)注意:1)强制转换属单目运算,运算优先级为22)强制转换得到的是中间变量类型,原变量类型不变。例:intx,y;floatz;(float)(x+y);(int)z+x;,例:(double)1/2的值为0.5,因为(double)1将整型数1转换成1.0(双精度类型),1.0/2值为0.5。,.,38,赋值运算符和赋值表达式,例3.11强制类型转换。#includestdio.hmain()floatx;inti;x=3.6;i=(int)x;printf(x=%f,i=%dn,x,i);,.,39,3.5.4增量运算符和增量表达式,1、自增、自减运算符作用:自增运算符+:使变量的值增1自减运算符-:使变量的值减12、两种形式前缀形式:+i,-i(在使用i之前,先使i的值加1(减1)后缀形式:i+,i-(在使用i之后,再使i的值加1(减1),.,40,增量运算符和增量表达式,例:j=+i;j=i+;等价于等价于j=i+1;j=i;i=i+1;i=i+13、结合方向与优先级:+,-的结合方向:从右至左+,-的优先级:,例:intj=5,i=1,k,n;n=-+i;k=-j*2;,-28,.,41,增量运算符和增量表达式,例:若i=1;j=+i;则j的值为2(i先加)若i=1;j=i+;则j的值为1(i后加)运算符和运算对象的关系有结合方向如:若i=1;j=-i+;则j的值为-1。(i后加,i的值为2)负号与+,-结合方向都是从右到左,不要看成j=(-i)+,(-i)+是错误的表达式,最好分成多句。j=-i;i+;例:若intk,i=2,j=4;则表达式k=(+i)*(j-)的值是()。,12,.,42,增量运算符和增量表达式,补充补充例题:main()inti=3,j,k,m,n;j=i+*+i;k=-i*-i;m=+i*+i;n=+i*i-;printf(j=%d,k=%d,m=%d,n=%dn,j,k,m,n);,j=16,k=9,m=25,n=36,.,43,3.5.8逗号运算符和逗号表达式,逗号运算符运算符:,作用:连接两个表达式。优先级:最低结合方向:从左至右逗号表达式一般形式:表达式1,表达式2,表达式n例:i=1,j=0 x/(y+1),a+b,3*4,.,44,逗号运算符和逗号表达式,求值过程:从左至右依次求表达式1,表达式2,表达式n的值,最后一个表达式的值为整个逗号表达式的值。例:x=(a=3,6*3)注意:逗号运算符优先级最低,要注意加括号。例:比较x=(a=3,6*3)与x=a=3,6*3并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的:printf(%d,%d,%d,a,b,c);,.,45
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市管理专员考试的主要内容及答案
- 2025年艺术创作与文化传播基础知识考试卷及答案
- 2025年职业院校教师教学能力测评试卷及答案
- 2025年现代企业管理与创新能力测试考试卷及答案
- 2025年文化产业与创意经济知识考试卷及答案
- 2025年心理咨询师执业考试卷及答案
- 2025年社会保障政策与法规考核试卷及答案
- 2025年食品安全管理考试试题及答案
- 2025年人力资源管理师职业考试题及答案
- 2025年家庭教育指导师职业资格考试卷及答案
- 2023年镇江丹阳市民政局系统事业单位招聘笔试模拟试题及答案
- 幼儿园消防安全组织机构图
- 英语社团活动课件
- 第三方检测市场部管理制度提成方案
- 学前儿童发展心理学-情感
- GB∕T 16762-2020 一般用途钢丝绳吊索特性和技术条件
- 电网施工作业票模板
- 安徽省小学学生学籍表
- 精选天津市初中地理会考试卷及答案
- 非车险销售人员基础培训系列第一讲走进非车险世界
- 比选申请文件模板
评论
0/150
提交评论