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