表达式和语句.ppt

上传人:石*** 文档编号:49892721 上传时间:2022-10-12 格式:PPT 页数:63 大小:4.03MB
返回 下载 相关 举报
表达式和语句.ppt_第1页
第1页 / 共63页
表达式和语句.ppt_第2页
第2页 / 共63页
点击查看更多>>
资源描述

《表达式和语句.ppt》由会员分享,可在线阅读,更多相关《表达式和语句.ppt(63页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、表达式和语句现在学习的是第1页,共63页n n 表达式的左表达式的左表达式的左表达式的左值值和右和右和右和右值值n n 左左左左值值(lvalue)lvalue)lvalue)lvalue):出出出出现现在在在在赋值赋值表达式左表达式左表达式左表达式左边边的表达的表达的表达的表达式。式。式。式。n n 右右右右值值 (rvalue)(rvalue)(rvalue)(rvalue):出出出出现现在在在在赋值赋值表达式右表达式右表达式右表达式右边边的表达的表达的表达的表达式。式。式。式。n n 现在学习的是第2页,共63页算符的优先级与结合性算符的优先级与结合性n操作符优先级决定了在复杂表达式中各

2、操作符操作符优先级决定了在复杂表达式中各操作符执行的先后顺序。执行的先后顺序。nC+中规定了各种运算符的结合方向(中规定了各种运算符的结合方向(结合结合性性),算术运算符的结合性为左结合性,),算术运算符的结合性为左结合性,而赋值、增量、减量等运算符为右结合性。而赋值、增量、减量等运算符为右结合性。现在学习的是第3页,共63页 算术类型转换算术类型转换n有关类型的信息只是一种规则:有关类型的信息只是一种规则:“取取x位二进制位二进制数并按下面的规定翻译它们数并按下面的规定翻译它们”。n某些类型转换是不安全的,如将占存储空间大某些类型转换是不安全的,如将占存储空间大的类型转换为占存储空间小的类型

3、是一类不安的类型转换为占存储空间小的类型是一类不安全的转换。全的转换。nlong lval;n unsigned char uc;n int(3.14159);n(signed char)uc;n short(lval);现在学习的是第4页,共63页n n隐式类型转换隐式类型转换隐式类型转换隐式类型转换 是由编译器完成的没有程序员人为干预的类型转是由编译器完成的没有程序员人为干预的类型转换,它在不同类型的数据参与同一运算时自动完换,它在不同类型的数据参与同一运算时自动完成。成。n把一个数值赋给一个对象时,系统将该数值的类把一个数值赋给一个对象时,系统将该数值的类型转换为对象所具有的类型;把一个

4、数值传给一型转换为对象所具有的类型;把一个数值传给一个函数时,系统将其类型转换为参数所具有的类个函数时,系统将其类型转换为参数所具有的类型。型。如:void fun(int);int val=3.14159;fun(3.14159);现在学习的是第5页,共63页n在算术表达式中,具有较大空间的数据类型成为最在算术表达式中,具有较大空间的数据类型成为最终结果转换成的数据类型。终结果转换成的数据类型。charcharshortshortintintlong intlong intUnsigned charUnsigned charUnsigned shortUnsigned shortUnsign

5、edUnsigned int intUnsignedUnsigned long longdoubledoublefloatfloatlong doublelong double现在学习的是第6页,共63页例1:int val=3;val+3.1415914;val=val+3.1415914;/进行了两次类型转换例2:int i=10;i*=2.3;例3:long m=234*456/6;例4:float f=3.5;long int n=6;long k=21;double ss=f*n+k/2;现在学习的是第7页,共63页n n显式类型转换显式类型转换显式类型转换显式类型转换n形式:形式:

6、type(expr)(type)exprn原因:原因:使基本转换不再进行使基本转换不再进行 例如:例如:int i;i=i+3.1415914;i=i+int(3.1415914);在有可能存在几种隐式类型转换的情况下,在有可能存在几种隐式类型转换的情况下,明确地指出使用哪一种类型转换。明确地指出使用哪一种类型转换。在引用在引用void*型指针之前,必须先进行显型指针之前,必须先进行显式类型转换。式类型转换。现在学习的是第8页,共63页n例如:int i;void *vp;int *ip=&i;double *dp;vp=ip;dp=vp;/error dp=(double*)vp;现在学习的

7、是第9页,共63页 赋值运算符n赋值构成一个表达式,它具有值。赋值构成一个表达式,它具有值。如:如:cout (x=10);n赋值运算可将多个操作数连起来,但应该保证各操赋值运算可将多个操作数连起来,但应该保证各操作数的类型是一致的。作数的类型是一致的。如:如:int a;float b;a=b=0;/Warningn进行赋值运算时,可能由于右值超出左值的范围进行赋值运算时,可能由于右值超出左值的范围而发生而发生溢出溢出现象。现象。如:如:short int x=52367;现在学习的是第10页,共63页算术运算符 运算符功 能用 法*乘expr*expr/除expr/expr%取模(求余)e

8、xpr%expr+加expr+expr-减expr-expr(1)“/”运运算算符符的的两两个个运运算算对对象象均均为为整整数数时时,其其结结果果是是整整数数。(2)取取模模运运算算符符“%”要要求求参参加加运算的两个数均为整数。(运算的两个数均为整数。(3)遵循算术的自然特性,例如禁止除数为)遵循算术的自然特性,例如禁止除数为0等;(等;(4)防止数据长度的溢出。)防止数据长度的溢出。现在学习的是第11页,共63页算术运算问题算术运算问题 2-2整型数的周而复始性,如:unsigned int a=2000000000;unsigned int b=3000000000;cout a+b“n

9、”;结果为:705032704 =5000000000%232 超过表示范围的整型数不是报错,而是表示成一个去掉进位后的余数现在学习的是第12页,共63页有符号数int a=2000000000;int b=1000000000;A+b=3000000000取补 /3000000000-232*n=-1294067296现在学习的是第13页,共63页中间结果溢出中间结果溢出导致计算错误,如:int a=100000;int b=100000;int c=1000;couta*b/cn;couta*(b/c)n;结果为:1410065 10000000现在学习的是第14页,共63页关系运算符 运

10、算符功 能用 法小于expr expr=小于等于expr 大于expr expr=大于等于expr=expr=等于expr=expr!=不等于expr!=expr现在学习的是第15页,共63页逻辑运算符 运算符功 能用 法!逻辑非!expr&逻辑与expr&expr|逻辑或expr|expr操作数A操作数BA&BA|B!A0(false)0(false)0(false)0(false)1(true)0(false)1(true)0(false)1(true)1(true)0(false)0(false)1(true)0(false)1(true)1(true)1(true)1(true)现在学

11、习的是第16页,共63页 赋值运算符 运算符功 能用 法+=加赋值Expr+=expr-=减赋值expr-=expr*=乘赋值expr*=expr/=除赋值expr/=expr%=取模赋值expr%=expr=左移赋值expr=左移赋值expr=expr&=按位与赋值expr&=expr=按位异或赋值expr=expr|=按位或赋值expr|=expr现在学习的是第17页,共63页 增量与减量运算增量与减量运算n 形式:形式:+i,-i,i+,i-n 注意:注意:n+与与-运算只能用于变量,而不能用于常量和运算只能用于变量,而不能用于常量和表达式。表达式。如:如:如:如:int i=3;int

12、 i=3;cout-i+;cout b?a:c d?c:d a b?a:(c d?c:d)n条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同,表达式2与表达式3的类型也可以不同。如:int x=3,y=2;x y?1:2.55;现在学习的是第23页,共63页sizeof运算符 nsizeof运算符用于返回变量或数据类型所占用的存储空间的字节长度,格式由3种:“sizeof(数据类型)”、“sizeof(变量)”和“sizeof 变量”。例如在32位机器中,sizeof(double)的值为 8。现在学习的是第24页,共63页位运算符 nC+语言有两种方式支持位向量操作:n(1)用

13、整数表示位向量,通过位运算符测试或者设置其中的一位或一组二进制数。整数可以是unsigned,也可以是signed,建议采用unsigned型的整数,因为符号位在不同的位运算符中的处理方法是不一样的,并且依赖于具体的机器型号。n(2)是采用标准库提供的bits类。现在学习的是第25页,共63页位运算符 运算符功 能用 法接位求反expr左移expr 右移expr expr&按位与expr&expr按位异或expr expr|按位或expr|expr现在学习的是第26页,共63页位操作位操作 4-1左移操作将整数最高位挤掉,在右端补0。如:int a=12;/a为:000000000000000

14、00000000000001100 a=a在在整整数数的的高高位位挤挤一一个个0或或1进进去去(有有符符号号数数挤挤符符号号位位,无无符符号号数数挤挤),而整数最低位被挤掉。如:),而整数最低位被挤掉。如:short int a=-2;/1111111111111110 a=a1;/a=-1 即1111111111111111 unsigned short int b=65535;/1111111111111111 b=b1;/b=32767即0111111111111111C+对右移操作规定:对有符号数,若最高位是1,则高位挤进1若最高位是0,则高位挤进0,对无符号数,则一律挤进0现在学习的

15、是第28页,共63页位操作位操作 4-3位与操作&将两个操作数每一位做与操作,如:int a=12;/a为:00000000000000000000000000001100 int b=6;/b为:00000000000000000000000000000110 /a&b为:00000000000000000000000000000100 int cbit=a&b;int clogic=a&b;cout cbit “n”clogic “n”;结果为:(比较&与&的区别)4 1现在学习的是第29页,共63页位操作位操作 4-4位与操作|将两个操作数每一位做或操作,如:将两个操作数每一位做或操作,

16、如:int a=12;/a为:00000000000000000000000000001100 int b=6;/b为:00000000000000000000000000000110 /a|b为:00000000000000000000000000001110 int cbit=a|b;int clogic=a|b;cout cbit “n”clogic b)coutaendl;if(a=b)coutaendl;else coutbb)return a;else return b;/return是返回值的意思 或int max(int a,int b)if(ab)return a;retur

17、n b;现在学习的是第41页,共63页if语句的几个要点 4-2nif条件后的语句不止一条,则要用大括号包成复合语句。例如:if(ab)/if条件后面的语句不止一条 a=a+s;couts;else b=b+s;现在学习的是第42页,共63页if语句的几个要点 4-3nif(条件)中的条件有多种写法。在C/C+语言中,0表示假,非0表示真。例如:if(s)cout“this is sn”;/若s为0则跳过,否则输出this is sif(int a=b)counta0)if(x50)cout “OK.n”;else count“Not OK.n”现在学习的是第44页,共63页条件表达式n条件表

18、达式简化if语句写法n条件表达的语法:(条件)?表达式1:表达式n条件表达式是C+中唯一的一个三元操作符n由于条件操作符的优先级较低,所以整个条件表达式一般总要带上括号。现在学习的是第45页,共63页if语句与条件表达式互换对于 if(x)a=327981;else b=327981;可表示为:x?a=327981:b=327981;如果a和b为同类型,则还可以:(x?a:b)=327981;现在学习的是第46页,共63页浮点数的比较浮点数的比较 浮点数的精度和有效位 影响比较的正确性,如:float f1=7.123456789;float f2=7.123456785;if(f1=f2)c

19、out“f1 equal to f2n”;float f=1.0/3.0;double d=1.0/3.0;if(g=d)cout“g not equal to dn”;结果为:结果为:f1 equals to f2 g not equals to d现在学习的是第47页,共63页浮点数的比较浮点数的比较 浮点数计算的近似性 使精确性比较失败,如:double d1=123456789.9*9;double d2=1111111109.1;if(d1!=d2)cout “Not samen”;else cout “Samen”;if(abs(d1-d2)1e-05)cout “Samen”;e

20、lse cout “Not samen”;结果为:结果为:Not sameSame现在学习的是第48页,共63页switch语句 2-1nswitch语句一般用于2个以上的分支nswitch语句的一般形式:switch()case :case ::case :default:等价于:等价于:if(if(表达式表达式=value1)=value1)语句语句1;1;else if(else if(表达式表达式=value2)=value2)语句语句2;2;else else 语句语句n;n;现在学习的是第49页,共63页switch语句 2-2n虽然switch有等价的复合if表示,而且,分支判断

21、值只能是整数,显得应用范围狭窄,但是switch在使用上的直观和灵活形式,使得其仍具有编程价值.如:break可选,甚至case可以重叠:case value1:语句1;case value2:语句2;case v1:case v2:case v3:语句;现在学习的是第50页,共63页switch 语句要点 8-1nswitch()中的表达式只能是整形、字符型或枚举型表达式。关于数据类型将在下一章讲解。float f=4.0;switch(f)/错.现在学习的是第51页,共63页switch 语句要点 8-2ndefault语句n当表达式的值与某个case后面的常量表达式值相等时,就执行此ca

22、se后面的语句;若所有case中的常量表达式都不匹配式,就执行default语句。现在学习的是第52页,共63页switch 语句要点 8-3ncase 值ncase后面的值是不能重复的,否则会出现编译错误。ncase 后面的值在实际中通常会用常量名称或宏替代,以增加程序的可阅读性。case A:cout “this is An”;case 65:cout “this is 65n”;/错:A等于ASCII码的65现在学习的是第53页,共63页switch 语句要点 8-4n遇break跳出nCase与default只起语句标号的作用,并不改变程序流程,如果要改变流程通常case要与break

23、语句联用。swicth(grade)case A:cout “90100n”;case B:cout “8089n”;case C:cout “7079n”;case D:cout “6069n”;case E:cout “60n”;default:cout “errorn”;swicth(grade)case A:cout “90100n”;break;case B:cout “8089n”;break;case C:cout “7079n”;break;case D:cout “6069n”;break;case E:cout “60n”;break;default:cout “error

24、n”;现在学习的是第54页,共63页switch 语句要点 8-5ncase 顺序随意(不提倡)n各个case(包括default)的出现次序可以任意,在每个case分支都带有break的情况下,case次序不影响执行结果。swicth(grade)case A:cout “90100n”;break;case D:cout “6069n”;break;case B:cout “8089n”;break;case C:cout “7079n”;break;default:cout “errorn”;case E:cout “60n”;break;现在学习的是第55页,共63页switch 语句

25、要点 8-6nbreak使用技巧n可以选择使用break,也可以多个case语句并列,丰富switch的用法。swicth(ch)case-:b=-b;case+:a=a+b;break;case 1:case 2:case 3:a=1;break;/case 1,2,3:a=1 这种写法错误default:a=0;现在学习的是第56页,共63页switch 语句要点 8-7nswicth嵌套ncase与default标号是与包含它的最小的switch相联系的。int i,j;swicth(ch)case 1:/.case 2:switch(j)case 1:/.case 2:case 3:/

26、.现在学习的是第57页,共63页switch 语句要点 8-8nif与switch互相弥补nswitch与if语句从功能上讲一般可以互换,也就是说用switch能完成的功能,一定可以用if完成,反过来说用if能完成的功能大多也能用switch完成。现在学习的是第58页,共63页补充应用现在学习的是第59页,共63页关系与逻辑操作关系与逻辑操作 4-1=与=的区别int x=9;if(x=0)cout “test 1 okn”;if(x=5)cout “test 2 okn”;if(x=0)cout “test 3 okn”;结果为:test 2 ok现在学习的是第60页,共63页关系与逻辑操作

27、关系与逻辑操作 4-2!=!=是操作符,是操作符,=!=!不是操作符不是操作符 int x=3;if(x!=9)cout “not 9n”;if(x=!9)cout “impossiblen”;/!9表示假条件表达式(x!=0)与(x)等同 int x=3;if(x!=0)cout x;if(x)cout x;现在学习的是第61页,共63页关系与逻辑操作关系与逻辑操作 4-3n不等式连写的错误:int a=-1,b=0,c=1;if(abc)cout “ok1n”;if(ab&bc)cout 2)cout “okn”;避免不必要的求值 if(a=0|b=func()cout”uselessn”;现在学习的是第63页,共63页

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com