《表达式和语句》PPT课件.ppt

上传人:wuy****n92 文档编号:70498041 上传时间:2023-01-21 格式:PPT 页数:22 大小:267.50KB
返回 下载 相关 举报
《表达式和语句》PPT课件.ppt_第1页
第1页 / 共22页
《表达式和语句》PPT课件.ppt_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《《表达式和语句》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《表达式和语句》PPT课件.ppt(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第3章 表达式和语句03:52:111C+语语言言程程序序设设计计教教程程第第2章章表表达达式式和和语语句句C+语语言言程程序序设设计计教教程程第第2章章表表达达式式和和语语句句 运算符运算符是描述对数据进行的运算(操作)、体现数据之间运算关系的符号,运算符也叫操作符。表达式表达式是运算符与数据连接起来的表达运算的式子,表达式也称运算式运算式。优先级优先级是指表达式中运算符运算的顺序。当一个表达式中包含多个运算符时,先进行优先级高的运算,再进行优先级低的运算。如果表达式中出现了多个相同优先级的运算,运算顺序就要看运算符的结合性了。结合性结合性是指操作数左右两边运算符的优先级相同时,优先和哪个运

2、算符结合起来,进行运算。运算符的结合顺序有两种:左结合左结合和右结合右结合。优先级与结合性优先级与结合性左结合左结合左结合左结合 num1num1op1op1num2num2op2op2num3(num1num3(num1op1op1num2)op2num3num2)op2num3右结合右结合右结合右结合num1num1op1op1num2num2op2op2num3num1op1num3num1op1(num2num2op2op2num3num3)3.1运算符运算符:算数运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 逗号运算符 指针运算符3 基本算术运算符及其含义基本算术

3、运算符及其含义:优先级优先级运算符运算符含义含义结合性结合性2+正号从右向左-负号4*乘从左向右/除%取余5+加-减算术运算符算术运算符表中优先级数字小的优先级高(1)算术运算符的意义、优先级与数学中一致:+(正号),-(负号)是一元运算,优先级高于二元运算,*、/、%优先级高于+(加)、-(减)运算。例如:a=10;b=5;a+b*-1;得到结果5 (2)%要求两个操作数的值必须是整数或字符型数。“操作数1%操作数2”计算结果是操作数1被操作数2除的余数。当两个操作数都是正数时,结果为正;如果有一个(或两个)操作数为负,余数的符号取决于机器。21%6/结果是34%2/结果是021%-5/机器

4、相关:结果为-1或1C+语语言言程程序序设设计计教教程程第第2章章表表达达式式和和语语句句 基本算术运算符及其含义基本算术运算符及其含义:算术运算符算术运算符优先级优先级运算符运算符含义含义结合性结合性2+正号从右向左-负号4*乘从左向右/除%取余5+加-减 (3)当/运算符用于两个整数相除时,如果商含有小数部分,将被截掉。如果要进行通常意义的除运算,则至少应保证除数或被除数中有一个是浮点数或双精度数。(4)在使用算术运算符时,需要注意有关算术表达式求值溢出的处理问题;5/4/结果是14/5/结果是05/4.0/结果是1.254.0/5/结果是0.8shorti=32767,j,k;j=i+1

5、;k=i+2;coutj=j,k=k大于从左向右=大于等于=小于等于8=等于!=不等于 (1)若关系运算符的计算结果继续用在表达式中,true与false分别当成了1与0。(2)关系运算符的操作数可以是任何基本数据类型的数据,但由于实数(float)在计算机中只能近似地表示一个数,所以,一般不能直接进行比较。当需要对两个实数进行=、!=比较时,通常的做法是指定一个极小的精度值,若两实数的差在这个精度之内时,就认为两实数相等,否则为不等。x=y应写成fabs(x-y)1e-6/fabs(x)求double类型数x的绝对值 (3)关系表达式就是由关系运算符将两个操作数连接起来的式子。这两个操作数可

6、以为常量、变量、算术表达式等。例如:a+bc+dab=cda=b0.5)逻辑运算符列表逻辑运算符列表 逻辑运算的功能表逻辑运算的功能表C+语语言言程程序序设设计计教教程程第第2章章表表达达式式和和语语句句位运算分为移位运算与按位逻辑运算位运算符位运算符 优先级优先级运算符运算符含义含义结合性结合性2位求反从右向左6右移9&位与10位异或11|位或 (1)运算符将操作数逐位取反,即将原来为1的位变为0,原来为0的位变为1。例如,按位求反c的结果为01111000。(2)运算符将两个操作数对应位逐一地进行逻辑与运算。与运算的规则为“见零则零”,即两个数中只要有一个为0,则其逻辑与的结果就为0。(3

7、)运算符|将两个操作数对应位逐一地进行逻辑或运算。逻辑或运算的规则为“见壹则壹”,即两个数中只要有一个为1,则其逻辑或的结果就为1。unsignedcharc(135),d(43);二进制表示分别为10000111和00101011。(4)运算符将两个操作数对应位逐一地进行逻辑异或运算。逻辑异或运算的规则为“同则零,异则壹”,即两个数只要不同,则其逻辑异或的结果就为1;否则为0。C+语语言言程程序序设设计计教教程程第第2章章表达式和语句位运算符位运算符 (5)运算符将左操作数向右移动其右操作数所要求的位数,移出的位补以0。将一个数右移n位,相当于将该数除以2n。这与整型和字符型数据的除法运算完

8、全一致,所以在程序中常用右移位来进行快速的除法运算。F注意注意:位运算符是对其操作数按其二进制形式逐位地进行逻辑运算或移位操作的,运算对象为bool、char、short、int等类型数,但不得是实型数据。用移位方法进行乘法运算时,同样要注意溢出问题。按位左移运算符与插入运算符同形(同一个符号),按位右移运算符与提取运算符同形。那么编译器是如何来区分cout73;是将7左移3位,还是向屏幕上输出7、3呢?编译器将把该表达式解释成向屏幕输出7、3,这是由于cout是C+语言中预定义的输出流类的对象,在该对象所属的类中,对运算符y?12:10.0);/a=(xy?12:10.0);/若若xy(xy

9、xy(xy的值为的值为true),true),将将1212赋给赋给a;a;否则否则a=10.0a=10.0。条件运。条件运算表达式的返回类型为算表达式的返回类型为10.010.0的类型的类型doubledouble。x?y=a+10:y=3*a-1;/x?y=a+10:y=3*a-1;/若若xx非非00则把则把a+10a+10的值赋给的值赋给yy,否则把,否则把3*a-13*a-1的值赋的值赋yyd1?d2:d3C+语语言言程程序序设设计计教教程程第第2章章表达式和语句其它运算符其它运算符 2.逗号运算符逗号运算符逗号可作分隔符使用,将若干变量隔开,如:inta,b,c;一般形式为:逗号表达式

10、的求解过程为:先求表达式1的值,再求表达式2的值,最后求表达式n的值。整个逗号表达式结果的值是最后一个表达式n的值。它的类型也是最后一个表达式的类型。例如:a=a+b,b=b*c,c=c-a;设a=3,b=5,c=7,该表达式依次计算出a的值为8、b的值为35、c的值为-1、且整个表达式的值为-1。更进一步:x=(a=a+b,b=b*c,c=c-a);/x的值为-1。表达式表达式1,表达式,表达式2,表达式,表达式n;逗号运算符还用在只允许出现一个表达式而又需要多个表达式才能完成运算的地方,用它将几个表达式连起来组成一个逗号表达式。在C+语言所有运算符中,逗号表达式的优先级最低。C+语语言言程

11、程序序设设计计教教程程第第2章章表达式和语句(1)运算符的优先级按单目、双目、三目、赋值依次降低。运算符的优先级按单目、双目、三目、赋值依次降低。运算符优先级的规律运算符优先级的规律 单目运算是右结合的,旨在与右边的数结合在一起形成一个整体,因此优先级高。算术运算中的+(正)、-(负)、+、-、逻辑运算中的取非!,按位运算中的取反从各类运算中提取到单目运算中。赋值运算之所以优先级低且为右结合,是因为要右边的表达式计算完后才赋值给左边的变量。移位运算是一种高效的算术运算,看作算术运算的补充,优先级在算术运算后。算术运算后的结果要进行比较,因此关系运算的优先级在算术、移位后。关系运算得出的逻辑值要

12、进行运算,所以逻辑运算优先级在关系运算后。(2)算术、移位、关系、按位、逻辑运算的优先级依次降低。算术、移位、关系、按位、逻辑运算的优先级依次降低。C+语语言言程程序序设设计计教教程程第第2章章表达式和语句 1.自动转换自动转换C+语言支持不同数据类型的数据之间的混合运算。在对这样的表达式求值时,需要对其中的一些操作数进行类型转换。表达式中的类型转换有两种方式:自动转换和强制转换。各种类型的高低顺序如下所示:3.2类型转换 (1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算,转换按数据长度增加的方向进行,以保证精度不降低,且运算的结果(即表达式的值)的类型是运算式的最终类型。(2)

13、所有的浮点型运算都是以双精度进行的,即使仅含float单精度运算的表达式,也要先转换成double型,再作运算。C+语语言言程程序序设设计计教教程程第第2章章表达式和语句3.2类型转换 (3)bool、char型和short型参与运算时,必须先转换成int型。(4)逻辑运算符要求参与运算的操作数必须是bool型,如果操作数是其它类型,编译系统会自动将非0数据转换为true,0转换为false。(5)位运算的操作数必须是整数,当二元位运算的操作数是不同类型的整数时,也会自动进行类型转换。(6)在赋值运算中,赋值号两边的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长

14、度比左边长时,可能丢失一部分数据,或降低精度。floatpi=3.1;/降低了精度floatf=3.5;/未降低精度 (7)将signed型的整型变成较长的signed型的整型,unsigned型变成较长的整型时,原值以及正负符号不变。inta=-2;longb=a;/b的值仍为-2C+语语言言程程序序设设计计教教程程第第2章章表达式和语句3.2类型转换 (8)将unsigned型和同长度的signed型互变时,其值根据自身所属范围发生适当的变化。unsignedshorta=65535;shortintb=a;/b的值变成-1shortinta=-2;unsignedshortb=a;/b的

15、值变成65534假设定义变量为:charc=1;floatf=3.1;表达式(3=f)+(B-c)/1.0+f的类型转换图如下:C+语语言言程程序序设设计计教教程程第第2章章表达式和语句3.2类型转换 2.强制类型转换强制类型转换旧式的C语言风格的强制类型转换的格式如下:类型说明符类型说明符 (表达式表达式)或(类型说明符类型说明符)表达式表达式例如:int(a+b)/将a+b运算的结果转换成int型5/float(3)/将3转换成float型inta;floatx=8.57;a=(int)x;/取整数部分,舍弃小数部分结果a=8,x仍为float型,其值仍为8.57。采用强制类型转换将高类型

16、数据转换为低类型数据时,数据精度可能会受到损失。C+语语言言程程序序设设计计教教程程第第2章章表达式和语句3.2表达式的副作用对于表达式:exp1+exp2;先计算exp1还是exp2?不同的编译器有不同的做法。在数学上,对于双目运算符,不论先计算哪一个操作数,要求最终计算结果一样。在C+中,在计算一个操作数时,该计算会改变(影响)另一个操作数,从而导致因操作数的不同计算次序产生不同的最终计算结果。对于因操作数计算的次序不同产生不同结果的表达式为带副副作作用用的的表表达达式式。在计算时会影响其他操作数的值,引起副作用的运算符为带带副副作作用用的的运运算算符符。如+、-以及各种赋值运算符为带副作用的运算符。x=1,(x+2)*(+x)先计算x+2表达式的值为6;若先计算+x,由于修改了x+2中x的值,计算结果为。C+中规定,先计算逻辑与(&)和逻辑或(|)的第一个操作数,再计算第二个操作数,以便进行短路求值。条件(?:)、逗号(,)运算符也规定了操作数的计算次序,除此以外,其他运算符没有规定操作数的计算次序,计算次序由具体的编译器决定。因此在含这些运算符的表达式中,避免在操作数中引入带副作用的运算符。C+语语言言程程序序设设计计教教程程第第2章章表达式和语句

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

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

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁