版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 表达式和语句,语句,在C/C+中语句是程序功能的基本执行单位。 多个语句结合在一起可以完成一些特定的功能。 一个语句有可以由若干个表达式组成。,第一节表达式,表达式,表达式用运算符和括号将运算对象(常量、变量和函数等)连接起来的符合C+语法规则的式子。 例: 2+3+(5*sizeof(int)/345 表达式根据某些约定、结合和优先级进行计算。 约定:类型转换的约定 float a; a=5/2; /a=2,而不是2.5 结合:相同优先级时的求值顺序。 d=a+b-c; /从左至右 d=a=3; /从右至左 优先级:不同优先级的运算符,总是先做优先级高的运算。 d=a+b*c;,左值
2、与右值(重要概念),左值(lvalue):能够出现在赋值表达式左边的常量、变量和表达式,是可以被改变的值。 int a=3; /a是变量,a是左值 const int b=4; /b是常量,b不是左值 右值(rvalue):只能出现在赋值表达式右边的常量、变量和表达式。左值表达式也可作为右值表达式 int a,b=6; a=b; /a、b都是左值,b此处作为右值 a=8 ; /8是常量,只能作为右值 (a=4)=28; /左值表达式可以再赋值,表3-1 优先级与结合性,表3-1 优先级与结合性,语句与块(复合语句),由表达式和分号组成一条完整的语句。 var = 2; 可以是空语句,仅有一个分
3、号,空语句要单独成行,最好能加上注释,解释原因,增加代码的可读性。 ; 块(复合语句),是包含在花括号内的多个语句的集合。从语法上讲块可以被认为是单个语句。块可以嵌套使用。,参与运算对象个数和运算符的种类,单目运算符:只有一个对象参与运算 +、 -、!、 等 双目运算符:参与运算的对象有两个 +、-、*、/ 。等 三目运算符:要有三个对象参与运算(只有一个) ?:,第二节 赋值运算符与赋值表达式,赋值运算符:= 赋值表达式:V= e; 赋值表达式的值等于运算符右边的表达式的值 其作用是将表达式的值存入变量V。 复合赋值运算符:由赋值运算符之前再加一个双目运算符构成(赋值缩写)。p37 格式:
4、V op= e 等价于: V = V op e 例如: a+=5, 等价于 a=a+5 复合赋值运算符有10个,最常用的是以下5个: +=、-=、*=、/=、%=,赋值过程中的类型转换,转换总是朝表达数据能力更强的方向,且转换总是逐个运算符进行。,赋值过程中的类型转换 p38,隐式转换 float f=3.5; int n=6; long k=21; double ss=f*n+k/2; /ss值为31,而不是31.5 long m=234*456/6; /m的值为-4061(16位机),17784(32位) 显示转换(强制转换):在数值或变量前加带括号的类型名,或类型名后加带括号的数值或表达
5、式 long m=(long)234*456/6; /m的值为17784 long m=long(234)*456/6; /m的值为17784 long m=long(234*456)/6; /在16位机上不能得到预期结果,复合赋值,a+ = a- = a*a,假设a的初值是12,求a 相当于: (1)a-=a*a, a=-132 (2)a+=-132, a=a=-264,第三节 算术运算符与算术表达式,基本算术运算符: + -* / % 加 减 乘 除(取整) 整除取余 +,-,* 是通常意义的加、减、乘法 / 对于整型数为除法取整:5/2=2 / 对于浮点数为普通意义除法:5.0/2.0=
6、2.5 % 只能对整型数进行操作:5%2=1 自增运算:+ -,算术表达式,算术表达式:由算术运算符组成的表达式。 运算对象:数值变量、常数、函数、表达式等。 运算结果: 数值。 优先级: 先乘、除、取余,后加、减。 结合性: 从左至右。 注意事项: x*-y 应写成 x*(-y) 6x 应写成 6*x 5X2应写成 5*X*X。,自增自减运算符,为了简化程序书写,C/C+语言中定义两种运算符: 自增运算符:+ 表示加1,i+等价于i=i+1。 自减运算符:- 表示减1,i- 等价于i=i-1。 作用是将唯一的操作数赋值为其自身值加1(减1)后的值。由于该操作数会被赋值,因此,必须是左值! 运
7、算规则: 只能用于变量。 合法: i+ 非法:3+ 前缀:+i -i 后缀:i+ i- +i (- - i ),先运算i,再使用i i+ (i - - ),先使用i,再运算i,前增量与后增量 p40,作为单一语句,前增量和后增量操作的作用是相同的,都是加1操作。 前增量操作:先将变量增1,使其实体发生变化,然后将变量对应的实体作为表达式结果。 后增量操作:先将变量的值(仅仅是值,不是实体)作为表达式的值确定下来,再将变量增1,实体值发生变化。 因此,作为表达式的结果,前增量返回的是左值,后增量返回的不是左值。,+(i+)非法:i+不是左值 +(+i)合法:i+是左值,详解,例:int m,i=
8、2;,自增自减的贪吃法则 p4041,只要能理解(能成为运算符),就尽量多读入字符。 int a=1,b=5, c; c=a+b; /ok c=a+b; /error; c=a + b c=a+b; /ok; c=a+ +b c=a+b; / error;c=a+ + b c=a+b; / error; c=a+ + +b 编译器对表达式的理解没有二义性,如果要使上述非法代码可行,只能人为控制: c=a + +b; /c=6 c=a+ + +b; /c=6,a=2,b=5 c=a+ + +b; /c=7,a=2,b=6 c=a+ +b; /c=8,a=1,b=7,第四节 关系运算和关系表达式,
9、关系运算符: = ,=,= 高于 = , != 赋值运算 关系运算 算术运算,运算对象,算术、关系、赋值、字符表达式 算术表达式: x+y = x*y ; 关系表达式: (a b) = (c d); 赋值表达式: (x + = 3 ) = ( y- = 1); 字符表达式: a ! = A ;,=和=的区别 p4142,=和=是两种不同的运算。 x=somevalue; if(x=9) /测试两者是否相等 cout“x is not 0n” ; x=somevalue; if(x=9) /x被赋予一个具体的值 cout“x is not 0n” ;,不等于运算符 p42,当要测试一些东西不是真
10、的时,可以用不等于运算符:!= 例: if(x!=9) coutx isnt 9; 注意: != 和 =!的意义完全不同 if(x=!9) coutx isnt 9;,第五节逻辑运算和逻辑表达式,逻辑运算符: d=(a=1,b=a+2,c=b+3); coutdendl; / 输出 d=6,第七节 位运算符与位运算表达式,位运算符种类 、 / a为:00001100 a = a1; / a为:00011000,十进制为24 左移1位,相当于乘2,右移操作,右移操作 在整数的高位挤一个0或1进去(有符号数挤符号位,无符号数挤 ),而整数最低位被挤掉。如: short int a = -2; /
11、1111111111111110 a = a1; / a=-1 即1111111111111111 unsigned short int b = 65535; / 1111111111111111 b = b1; / b=32767即0111111111111111 右移1位,相当于除2,与操作,位与操作 结果为:( 比较 / a为:00001100 int b = 6; / b为:00000110 int cbit = a | b; / a | b为:00001110 int clogic = a | b; /结果为“真”与“假” cout cbit “n” clogic “n” ; 结果为:( 比较 | 与 | 的区别 ) 14 1,异或和取反,位异或操作 将两个操作数每一位做异或
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蓝色预售合同
- 2026年四川长江职业学院单招职业技能测试题库及答案1套
- 2026国网吉林省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题及答案详解(名师系列)
- 2025年大一基础生态学考试试题及答案
- 西安往届中考试题及答案
- 2025-2030民办思维导图培训行业市场深度调研及前景趋势与投资研究报告
- 2025-2030民办学校校舍建设标准与校园规划设计方案研究报告
- 国家管网集团湖南公司2026届秋季高校毕业生招聘考试参考试题(浓缩500题)及答案详解【考点梳理】
- 2025-2030民办基础教育政策法规解读与合规经营指南报告
- 2025-2030民办在线教育行业竞争格局分析及技术趋势与投资策略研究
- 储能电池产品售后服务与维保方案
- 胃肠镜检查课件
- (2025年标准)金矿出售转让协议书
- 8 回忆鲁迅先生(课件)语文统编版2024八年级上册
- 新疆电网面试题目及答案
- 2025年药品及制药行业当前市场规模及未来五到十年发展趋势报告
- 审计专硕复试题及答案
- 新能源企业盈利能力分析-以比亚迪股份有限公司为例
- 检测公司销售部管理制度
- 外聘审计人员管理办法
- 2025年重庆市高考化学试卷(含答案)
评论
0/150
提交评论