C++表达式与基本程序控制结构.ppt
《C++表达式与基本程序控制结构.ppt》由会员分享,可在线阅读,更多相关《C++表达式与基本程序控制结构.ppt(76页珍藏版)》请在三一办公上搜索。
1、,第4章 C+表达式与基本程序控制结构,运算符是指用来表示在数据上执行某些特定操作的符号。参与运算的数据称为操作数。根据参与运算的操作数的个数是一个、两个或三个,运算符分为一元运算符、二元运算符和三元运算符。,41 运算符与表达式,表达式是指用运算符和圆括号把常量、变量和函数等运算成分连接起来的有意义的式子。单个常量、变量和函数也都可以看成是一个表达式。表达式经过计算后都会得到一个确定的值,这个值就是表达式的值。,每个表达式都具有唯一确定的值和唯一确定的类型。,例如:98.56,(98.56),x,876-78,3*(2.5+5),sqrt(9)都是合法的表达式。它们的值分别为98.56、98
2、.56、x的值、794、22.5、3。其中sqrt()是一个计算平方根的标准函数,包含在库math.h中。,C+中有一种表达式称为逗号表达式,指的是用逗号分隔开的表达式序列。比如:x=3,y=8,x+y逗号表达式的求值次序是从左到右依次计算各表达式的值,以最后一个表达式的值和类型作为整个逗号表达式的值和类型。比如上面这个逗号表达式的值为11。,4.1.1 算术表达式用算术运算符(+、-、*、/)连接起来的表达式就称为算术表达式。,用除法运算符进行整数除法与进行浮点数除法是不同的。用于整数时,表示整除,如果有余数,余数部分就被省略了。如:5/2 得到的结果为 2(int型)8/5 得到的结果为
3、1(int型)而用于浮点数时:5.0/2.0 得到的结果为 2.5(float型)8.0/5.0 得到的结果为 1.6(float型),取余运算符用于取整数除法的余数,是对除法运算符的一个必要的补充。如:5 2 得到的结果为 1 8 5 得到的结果为 3在/和%运算中,注意除数不能为零,否则将产生溢出错误。在做+和*运算特别是*运算时,很容易出现运算结果产生溢出的情况,要注意将数据定义为足够长度的类型。,当赋值运算符的两边出现相同的变量时,C+还提供了一个简洁的表达方式:x=。其中的x可为+、-、*、/、等。假定e1和e2是表达式,那么 e1=(e1)x(e2)就等价于 e1 x=e2例如,表
4、达式a=a+9可以用+=写成如下形式:a+=9 注意围绕 e2 的括号。例如,表达式y-=x+1实际上是y=y-(x+1),+和-运算符增1运算符和减1运算符分别对其操作数进行加1和减1操作,它们既可以用在变量前,作为前缀运算符,例如:int m,n;+m;-n;又可用在变量后,作为后缀运算符。例如:m+;n-;,前缀增(减)1运算符在使用变量的值之前就使变量值加1或减1,后缀增(减)1运算符在使用变量的值之后才使变量值加1或减1。例如,若n的值为5,那么 x=n+;先将n的值5赋给x,即x的值为5,再将 n的值加1,则n为6。而 x=+n;先将n的值加1得到6,再将n的值赋给x,则x和n的值
5、都为6。,4.1.2 关系运算C+的关系运算符都是二元的,有、=、=、=、!=,分别表示“大于”、“小于”、“大于等于”、“小于等于”、“等于”和“不等于”。由关系运算符连接起来的表达式就称为关系表达式。,关系表达式的值只有两个:1和0。1表示逻辑真,即该关系表达式成立;0表示逻辑假,即该关系表达式不成立。例如,表达式 6=4 的值为1,而表达式 67!=67 的值为0。,例4.1 关于关系运算的一个例子#include void main()double x=45.3,y;couty;cout(xy)endl;例4.1执行后,若输入的y的值是小于45.3的,则得到的结果是1,否则得到0。,4
6、.1.3 逻辑运算C+的逻辑运算符有三个:一元运算符!(逻辑非)和二元运算符&(逻辑与)、|(逻辑或)。用逻辑运算符连接起来的表达式称为逻辑表达式。,当 x=8 时,上述表达式为0。,|运算符左右两边的表达式只要有一个为真(非0),整个表达式的值就为1。只有当其左右两边的表达式都为0时,整个表达式的值才为0。例如:(x20)当x=36时,此表达式的值为1;x=8时,此表达式的值也为1;x=16 时,此表达式的值为0。,!运算符用在表达式的前面,表示取表达式的非。若表达式值为0,取非以后为1;若表达式值为非0,取非以后为0。例如:!(32)的值为0,因为(32)的值为1。,C+在计算逻辑表达式的
7、值时,若从左到右计算到某处就已经能够确定表达式的值,则不再继续后面部分的求值。,例如,形如 e1&e2 的表达式,在已求得表达式e1的值为0的情况下,已经能够确定整个逻辑表达式的值为0,C+就不再对e2求值。,同样,形如 e1|e2 的表达式,如果已经求得e1的值为1,则整个表达式的值一定为1,C+就不再对e2求值。,4.1.4 条件运算符条件运算符?:是C+中唯一的一个三元运算符。条件运算符的表达式具有如下形式:e1?e2:e3 其中e1、e2、e3皆为表达式。,条件运算执行的操作是:先计算表达式e1的值,如果为非0,则计算表达式 e2 的值并把它作为整个表达式的值;而如果e1的值为0,则计
8、算表达式e3的值,并用它作为整个表达式的值。,例如,表达式(x y)?10:20 如果x的值大于y的值,则表达式的值为10,否则表达式的值为20。又如,在语句 max=(ab)?a:b;中,max将赋值为a、b中较大的数。,4.1.5 位运算在计算机存储器中,所有的数据都是以二进制形式存放的。位运算是对二进制机器数进行的操作。C+中的位运算符有6种:按优先级顺序为,(),&,|。位运算符的运算对象只能是整型(int)或字符型(char),位运算不改变运算对象本身。,例4.2 下面的小程序将输出:fedcba98#includevoid main()int a=0 x01234567;/0000
9、 0001 0010 0011 0100 0101 0110 0111 couthexaendl;/1111 1110 1101 1100 1011 1010 1001 1000,(1)(按位求反):一元运算,将运算对象各位求反。,(2)(右移):二元运算,左操作数为移位对象,右操作数为移动位数n。返回移位对象整体向右移动n位,高位用n个0填补以后的值。(当移位对象为负数的补码时,高位用n个1填补。),例4.3 左移和右移#includevoid main()int a=0 x0089abcd;/0000 0000 1000 1001 1010 1011 1100 1101int b=-100
10、;/1111 1111 1111 1111 1111 1111 1001 1100 cout5)5)endl;/1111 1111 1111 1111 1111 1111 1111 1100,程序输出:113579a044d5efffff380fffffffc,(4)&(按位与):二元运算,将两个运算对象按位相与。(5)(按位异或):二元运算,将两个运算对象按位异或。(6)|(按位或):二元运算,将两个运算对象按位相或。,例4.4 按位逻辑运算#includevoid main()int a=0 x01234567;/0000 0001 0010 0011 0100 0101 0110 011
11、1int b=0 x89abcdef;/1000 1001 1010 1011 1100 1101 1110 1111 couthex(a/1000 1001 1010 1011 1100 1101 1110 1111,程序输出:12345678888888889abcdef,4.1.6 求字节数运算求字节数运算为一元运算,用sizeof()运算符。其功能是求变量或表达式的数据类型在内存中占据的字节数。待求字节数的表达式放在括号中,返回值为整型。,例4.5 求字节数运算#include#includevoid main()short a=-32768;float b=9.0;double c=
12、5.7;char d=k;coutsizeof(a);coutsizeof(b);coutsizeof(c);coutsizeof(d);coutsizeof(sqrt(b);coutsizeof(a+b+c)endl;程序输出:2 4 8 1 8 8,4.1.7 运算符的优先级和结合性当一个表达式中有多个运算符时,运算符的优先级和结合性就决定了表达式中各运算的先后顺序。优先级相同时,由结合性决定运算次序。,运算符的结合性分为左结合(从左到右计算)和右结合(从右到左计算)例如,运算符+和-优先级相同、为左结合,因此表达式 45+89-23按从左到右的顺序计算,先做加法再做减法。而赋值运算符=是
13、右结合的,因此表达式 x=y=78的运算次序为:先将78赋给y,再将y赋给x。,表4.1 C+常用运算符的优先级和结合性,C+各运算符的优先级总的来说有如下规律(按优先级从高到低):一元二元(除了赋值)三元赋值逗号;二元运算符又有如下规律:算术关系逻辑;逻辑运算符有如下规律:!&|。,例4.7 根据表达式的求值次序,求下列表达式的值假定有 int x=5,y=4,z=6;char a=s,b=t;int w=2;表达式 表达式的值 z/y z/4.0 z/y%z/x a b|y z a!=b&z 6 a=b&!(y z)a=b&!y z x+1+z x+1 z+-x-y|x+y z&z%3=0
14、(x+,x+=y,x+y),1,1.5,0,1,0,0,1,1,0,1,14,按照结构化程序设计的思想,程序由三种单入口、单出口的基本结构组成:顺序结构、选择结构、循环结构。C+的控制流就是由这三种基本结构组成的。,42 基本程序控制结构,4.2.1 顺序结构 顺序结构的程序是指程序中的所有语句都是按书写顺序逐一执行的,只有顺序结构的程序功能有限。,例4.8 计算球的体积。已知球的体积公式为:4R3V=3#include void main()float radius,bulk;cout radius;/输入半径 bulk=(4*3.1416*radius*radius*radius)/3;c
15、out bulk=bulk endl;/输出体积,选择结构也称为分支结构,用于处理在程序中出现了两条或更多执行路径可供选择的情况。选择结构可以用选择语句来实现。选择语句包括 if 语句和 switch 语句。,4.2.2 选择结构,1If 语句if语句有两种格式。,格式1:if(条件表达式)语句功能:对条件表达式求值,若值为真(非0)则执行它后面的语句;否则什么也不做。若需要执行的语句用单条语句写不下,就应该用复合语句。,例4.9 将两个数排序输出#include void main()float a,b,ls;cout ab;if(ab)ls=a;a=b;b=ls;couta b endl;
16、,格式2:if(条件表达式)语句1 else 语句2功能:对条件表达式求值,若值为真(非0)执行其后的语句1;否则执行else后面的语句2。即根据条件表达式是否为真分别作不同的处理。,4.10 用if else 对例4.9的改写#include void main()loat a,b,ls;coutab;if(ab)couta bendl;else cout b a endl;,上一节介绍的条件运算符也可以用if语句来改写。例如:y=(ab)?a:b;可以用下面这个 if-else 语句来代替:if(ab)y=a;else y=b;,if语句中也可以包含if 语句,这就构成了if语句的嵌套。,
17、例4.11 某单位向职工按月发放医疗补贴的具体方案如下:职工工龄在10年以下的,医疗补贴为其基本工资的10%;工龄在10年以上20年以下的,医疗补贴为其基本工资的15%;工龄在20年以上30年以下的,医疗补贴为其基本工资的20%;工龄在30年以上的,医疗补贴为其基本工资的30%。输入某职工的工龄及基本工资,计算他每月应得的医疗补贴。,#include void main()int seniority;double wages,allowance;coutseniority;/输入工龄 coutwages;/输入基本工资 if(seniority10)/工龄在10年以下 allowance=wa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 表达式 基本 程序控制 结构

链接地址:https://www.31ppt.com/p-6154021.html