C++程序设计 教学课件 ppt 作者 冯博琴 C++第2章

上传人:E**** 文档编号:89390212 上传时间:2019-05-24 格式:PPT 页数:51 大小:159KB
返回 下载 相关 举报
C++程序设计 教学课件 ppt 作者 冯博琴 C++第2章_第1页
第1页 / 共51页
C++程序设计 教学课件 ppt 作者 冯博琴 C++第2章_第2页
第2页 / 共51页
C++程序设计 教学课件 ppt 作者 冯博琴 C++第2章_第3页
第3页 / 共51页
C++程序设计 教学课件 ppt 作者 冯博琴 C++第2章_第4页
第4页 / 共51页
C++程序设计 教学课件 ppt 作者 冯博琴 C++第2章_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《C++程序设计 教学课件 ppt 作者 冯博琴 C++第2章》由会员分享,可在线阅读,更多相关《C++程序设计 教学课件 ppt 作者 冯博琴 C++第2章(51页珍藏版)》请在金锄头文库上搜索。

1、1,第2章 运算符、表达式和语句,中国铁道出版社,2,2.1 运算符概述,1运算符和表达式 运算符又称为操作符,是描述对数据进行运算的符号 运算中所需要的数据称为操作数或运算分量 由运算符将操作数连接起来构成的算式称为表达式 每个表达式都有一个运算结果,称为表达式的值 2运算符的构成 由一个字符构成,例如,“+”、“-” 由2个字符组合构成,例如“&”、“=” 由3个字符构成,例如,“=” 可以是C+中的保留关键字,例如“sizeof”,3,3运算符的分类,按运算符连接的运算量个数分类。 (1)单目运算符(或称一元运算符) 需要一个操作数,例如取负运算符“-”构成的表达式-x (2)双目运算符

2、(或称二元运算符) 需要两个操作数,例如,加法运算符“+”构成的a+b (3)三目运算符(或称三元运算符) C+中只有一个三目运算符,即条件运算符“?:”,用2个符号连接3个运算量,例如,ab?a:b,4,4优先级别,优先级别是指不同的运算符在同一表达式中同时出现时运算的优先次序。见附录,5,5运算符的结合性,结合性是指同一优先级的运算符同时出现时运算的优先次序。 下列运算符的结合性是从右向左: (1)所有单目运算符; (2)条件运算符(三目运算符): (3)双目运算符中的赋值运算符。,6,2.2 算术运算,在学习算术运算时除了要掌握算术运算符的功能,也要掌握将数学中的代数式正确地用算术表达式

3、写出,例如分式、根式的写法。,7,2.2.1 算术运算符和算术表达式,1算术运算符(9个) 取正(+)、取负(-)、加法(+)、减法(-)、乘(*)、除(/)、求余(%)、增1(+)、减1(-)。 (1)除法运算符“/” 除法运算符用于两个整数之间时,进行的是整除运算。 例如:5/2的结果是2 。 (2)求余运算符“%” 计算两个整数相除后的余数,该运算只能对整型数据或字符型数据进行,余数的符号与被除数相同。,8,2算术表达式,将数学的代数式写成C+的表达式时,应注意: (1)明确表达分子和分母,其中分数线用除号表示,必要时对分子和分母添加括号; (2)以e为底的指数要用数学函数exp表示;

4、(3)根式要用数学函数sqrt表示; (4)连乘时不要忘记乘号。 【例2-1】写出与代数式对应的C+表达式。 对应的C+表达式: (a*a)/(exp(y-x)+sqrt(1+2*exp(y-x),9,2.2.2表达式中数据类型不一致时的转换,1自动转换 用于赋值和计算表达式,转换的原则是向高看齐,向占用存储字节较多的类型看齐: 有符号整数转换为无符号整数时,符号位当作数值位; 短字节整数转换为长字节整数时,短字节数据放入长字节低端,高端进行符号扩展; 整数转换成实数。,10,【例2-2】数据类型自动转换,#include using namespace std; void main() in

5、t a=8,b=5; double c; c=a/b+0.4; coutc; ,11,2强制类型转换,在要转换的对象前面加上数据类型标识符,运算结果被转换成指定的数据类型。 格式: 数据类型标识符 (表达式) 或 (数据类型标识符)表达式 例如: (float)(a+b) (int) 5.5/3,12,【例2-3】数据类型强制转换,输入三个实数,分别计算这三个实数的整数部分和小数部分之和。 #include using namespace std; void main() double a,b,c; coutabc; cout“这三个实数的整数部分之和为:“(int)a+(int)b+(int

6、)cendl; cout“这三个实数的小数部分之和为:“a-(int)a+b-(int)b+c-(int)c; ,13,2.3 赋值运算,2.3.1赋值运算符和赋值表达式 符号“=”称为赋值运算符 用赋值运算符将一个变量和一个表达式连接起来构成的算式则称为赋值表达式。 格式: 变量名=表达式 求解过程:先计算赋值运算符“=”右侧表达式的值,然后将计算结果赋给左边的变量。,14,【例2-4】交换两个变量的值,对两个变量的值进行交换,常用的方法是借助第3个临时的变量,通过赋值的方法实现 #include using namespace std; void main() int x,y; x=4;y

7、=3; cout“交换前 x=“x“ y=“yendl; int t; / 变量t作为中间变量 t=x; x=y; y=t; cout“交换后 x=“x“ y=“y; ,15,2.3.2复合赋值运算符,复合赋值运算符 又称自反赋值运算符,由两个运算符组合而成,其中前一个是双目的算术运算符或位运算符,后一个是赋值运算符“=”。 复合赋值运算符共10个: +=、-=、*=、/=、%=、=、&=、=、|= 求解 先对左右两个运算量进行左边运算符的运算,然后再把运算结果赋给左边的变量。 例如:a+=3 相当于 a=a+3 m/=n+4,相当于m=m/(n+4),16,2.3.3增1运算符+和减1运算符

8、-,“+”和 “-”运算符放在变量名前或变量名后,用来对变量进行加1或减1的运算 例如:比较 i+或+i这两个表达式 相同:对变量i来说,两个表达式的结果是一样的 不同:表达式的值不同,表达式i+的值是变量i增1以前的值,表达式+i的值是变量增1以后的值。 例如:y=+x相当于顺序执行:x=x+1 和 y=x 又如:z=x+相当于顺序执行:z=x 和 x=x+1,17,【例2-5】程序分析,#include using namespace std; void main() int a=100; cout -aendl; couta-endl; coutaendl; ,18,2.4 比较运算,比

9、较运算是对两个运算量按指定的关系进行大小的比较,比较结果是判断两个运算量的值是否满足指定的条件,其值为逻辑值。 1关系运算符 (1) 大于 (4) = 大于等于 (5) = 等于(由两个等号构成) (6) != 不等于,19,优先级别,前4个(、=)的优先级相同,后两个(=、!=)的优先级相同 前4个运算符的优先级高于后2个 关系运算符的优先级高于赋值运算符,低于算术运算符 例如: ca+b 相当于 c(a+b) ab!=c 相当于 (ab)!=c a=bc 相当于 a=(bc),20,2. 关系表达式,关系表达式 用关系运算符将两个运算对象连接起来构成的算式 例如:ab 、(a=3)b=c

10、相等“=”符号和赋值号“=” 的区别: “=”是赋值运算符,例如,a=b是赋值表达式,结果是将b的值赋给变量a。 “=”是比较相等的运算符,表达式 a=b是关系表达式,判断a和b 的值是否相等,结果为逻辑值,21,3关系表达式的值,关系表达式的值是逻辑值“true”或“false”,分别表示“真”和“假” 由于“true”和“false”分别对应整数1或0,因此整型或字符型数据也可以参与关系表达式的运算 字符型数据也可以参与关系运算 例如,表达式 A0 相当于 650 其值为true。 又如,表达式 A100 相当于 65100 其值为false。,22,【例2-6】程序分析,#include

11、 using namespace std; void main() int a,b,i=4,j=3; a=i=j; b=i=j; cout“a=“aendl; cout“b=“bendl; ,23,2.5 逻辑运算,1.逻辑运算符 (1)逻辑与运算符“&” (2)逻辑或运算符“|” (3)逻辑非运算符“!” 如果参与逻辑运算的量不是逻辑值,则计算时非0 作为逻辑真,0作为逻辑假。,24,2.逻辑运算符的优先级,逻辑非“!”的优先级最高,逻辑与“&”次之,逻辑或 “|”最低 逻辑与“&”和逻辑或“|” 低于关系运算符 逻辑非“!” 高于关系运算符 例如: ab&ac 相当于 (ab)&(ac)

12、a=b|a=c 相当于 (a=b)|(a=c) !a|xy 相当于 (!a)|(xy),25,3.逻辑表达式,逻辑表达式 用逻辑运算符将运算对象连接起来构成的表达式。 逻辑表达式的值 以1作为逻辑真,以0作为逻辑假 【例2-7】数学上的算式 axb, 等价的C+表达式为 ax & xb,26,【例2-8】判断闫年的逻辑表达式,当年份满足以下两个条件之一时,该年即为闫年: (1)能被4整除,但不能被100整除; (2)能被400整除。 第1个条件可以表示为year%4=0&year%100!=0 第2个条件可以表示为year%400=0 这两个条件之间是或的关系,因此,判断某一年year是否是闫

13、年,可以用以下的逻辑表达式: (year%4=0&year%100!=0)|year%400=0,27,【例2-9】字符的判断,分析: 在ASCII中,大写的26个字母是按字母表顺序的,小写字母也是按字母表顺序,大写在前,小写在后,但大写字母Z 和a并不是连续。 判断变量ch是否为大写字母,就是判断ch是否在A和 Z之间: ch=A & ch=a & ch=A & ch=a & ch=0 & ch=9,28,4.逻辑表达式求解时应注意的问题,对逻辑表达式进行求解时,如果某个运算量的值可以决定整个逻辑表达式的值,其它的运算量就不必进行计算。 例如,对于逻辑与运算的表达式: a & b & c 对

14、该表达式先计算a,如果a的值为真时才计算b,只有a和b的值都为真时,才计算c。 对于表达式:a | b | c 计算时只有a的值为假才判断b,只有a和b都为假,才判断c的值。,29,【例2-10】程序分析,#include using namespace std; void main() int a=1,b=2,c=3,d=4,m=1,n=1,k; k=(m=ab) ,30,2.6 位运算,位运算是指对存储单元中的数据按二进制位分别进行运算,在进行位运算时,参与位运算的数据对象只能是整型或字符型数据。,31,位运算符,取反运算符“”为单目运算符 其余5个为双目运算符 双目运算符可以分别和赋值运

15、算符“=”组合,构成复合赋值运算符: =、&=、=、|= 例如,a&=b 相当于 a=a&b 又如,a=2 相当于 a=a2,32,1. 位取反运算符“”,对运算对象按位取反,将每一位上的1变为0,0变为1。 【例2-11】计算0110 0110表示八进制数110,写成二进制是01001000 各位分别取反的结果是:10110111 它对应的八进制数是267,所以0110的结果写成八进制是267。,33,2. 移位运算符“”,将一个二进制数的各个位全部左移(“”)若干位。 格式1: 移位对象右移位数 左移时右端低位补0,左端高位移出部分被舍弃 右移时右端低位移出部分被舍弃,当移动的是无符号整数

16、和正整数时,左端高位补0;若移动的是负整数,高位则补1。,34,【例2-12】移位运算,若a和b为short int型,且 a=4,计算 b=a2。 a用二进制数表示为:00000000 00000100 a左移两位后为: 00000000 00010000 即为十进制的16 b=a2 的结果为16,35,【例2-13】移位运算,若a和b为char型,且 a=68,计算 b=a2。 a用二进制数表示为: 01000100 a左移两位后为: 00010000 结果是十进制的16,所以 b=a2 的结果是16。,36,3. 位与运算符“&”,位与运算的规则: 0&0=0 0&1=0 1&0=0 1&1=1 规律:任何位上的二进制数,在

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号