第三章运算符和表达式优秀课件.ppt

上传人:石*** 文档编号:91231503 上传时间:2023-05-24 格式:PPT 页数:53 大小:2.06MB
返回 下载 相关 举报
第三章运算符和表达式优秀课件.ppt_第1页
第1页 / 共53页
第三章运算符和表达式优秀课件.ppt_第2页
第2页 / 共53页
点击查看更多>>
资源描述

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

1、第三章 运算符和表达式第1 页,本讲稿共53 页3.1 表达式n n 表达式的概念 表表达达式式是是用用运运算算符符与与圆圆括括号号将将操操作作数数连连接接起起来来所所构构成成的式子。的式子。n n 表达式与简单语句 在在CC语言中,在一个表达式的后面加上分号 语言中,在一个表达式的后面加上分号“;”就构就构成了简单语句。成了简单语句。有意义的简单语句有意义的简单语句 无无意义的简单语句意义的简单语句 第2 页,本讲稿共53 页3.2 算术运算符n n 种类及运算 种类及运算:+-*/%+-*/%注意 注意:n n 两 两个 个整 整数 数相 相除 除,结 结果 果仍 仍为 为整 整数 数,若

2、 若有 有一 一个 个数 数是 是浮 浮点 点数 数,则 则结 结果 果为浮点数据类型。为浮点数据类型。例:例:5/2=2 5/2=2 截去小数 截去小数 5/2.0=2.5 5/2.0=2.5n n 取 取模 模运 运算 算符 符%实 实际 际上 上是 是数 数学 学运 运算 算的 的求 求余 余数 数运 运算 算,其 其两 两个 个操 操作 作对 对象都必须是整数 象都必须是整数。例:例:5%2=1 5%2=1 取余数 取余数n n“”、“”还 还可 可以 以用 用做 做一 一元 元运 运算 算符 符。其 其余 余操 操作 作符 符均 均为 为二 二元 元运 运算 算符。符。第3 页,本讲

3、稿共53 页n n 算术表达式及算术运算符的优先级 算算术术表表达达式式就就是是用用算算术术运运算算符符和和圆圆括括号号将将操操作作数数连接起来的式子。连接起来的式子。算算术术运运算算符符的的优优先先级级与与数数学学基基本本相相同同,即即先先乘乘除除,后加减。取模运算的优先级与乘除相同。后加减。取模运算的优先级与乘除相同。一元算术运算符的优先级高于二元算术运算符。一元算术运算符的优先级高于二元算术运算符。第4 页,本讲稿共53 页 注意:n n 算术表达式应能正确的表达数学公式。例如:数学表达式是数学表达式是 3+x 2a 相应的相应的CC语言表达式应该是什么呢?语言表达式应该是什么呢?n n

4、 算术表达式的结果应该不超过其所能表示 的数的范围。第5 页,本讲稿共53 页n n 算术运算符的结合性 运算符的结合性是指如果一个操作数左边和右边的两个运算符的优先级相同,应该优先计算的操作符。例如:例如:a+b-ca+b-c C语言规定二元算术运算符的结合性是自左至右。第6 页,本讲稿共53 页3.3 增1/减1运算符 n n 类型:类型:+、-。n n这这两两个个运运算算符符都都是是单单目目运运算算符符,其其功功能能分分别别是是将将变变量量自自身的内容增身的内容增11和减和减11。n n+i+i和和-i-i是前缀表示法,是前缀表示法,i+i+和和i-i-是后缀表示法。是后缀表示法。n n

5、若若直直接接在在+i+i和和i+i+的的后后面面加加上上分分号号构构成成CC的的执执行行语句,即语句,即+i;+i;和和i+;i+;前缀与后缀并无区别。前缀与后缀并无区别。n n但但是是,将将它它们们用用在在表表达达式式中中则则前前缀缀与与后后缀缀是是有有区区别别的。的。第7 页,本讲稿共53 页前缀表示法是先将i值增/减1,再在表达式中使用;而后缀表示法是先在表达式中使用i的值,再将i值增/减1。例如:i=3;i=3;j=i+;j=+i;结果:j的内容为3j的内容为4i的内容为4i的内容为4第8 页,本讲稿共53 页注意:n n增增1/1/减减11运算符的操作对象是一个变量运算符的操作对象是

6、一个变量 2+2+、-2-2以及以及(x/y)+(x/y)+均为非法均为非法n n增增1/1/减减11运运算算符符的的优优先先级级高高于于算算术术运运算算符符,与与单单目目运运算算符符-(-(取取负负)、!(!(逻逻辑辑非非)的的优优先先级级相相同同,结结合合方方向向自右至左。自右至左。例:表达式例:表达式-i+-i+等价于等价于-(i+)-(i+)n n副副作作用用:printf(“%d printf(“%d,%d”,i,i+);,%d”,i,i+);在在不不同同的的编编译译环环境下结果有可能不同。境下结果有可能不同。n n尽尽量量不不要要在在一一般般的的表表达达式式中中将将增增1/1/减减

7、11运运算算符符与与其其它它运运算算符混合使用。符混合使用。第9 页,本讲稿共53 页main()int a=2,b,c;b=a+;c=a+1;printf(%d,%d,%dn,a,b,c);例:判断运行结果第10 页,本讲稿共53 页3.3.1 关系运算符n n关系运算,就是比较两个数值的大小的运算符。关系运算,就是比较两个数值的大小的运算符。n n关系运算符:关系运算符:、=、=、=、!=!=。n n 由关系运算符连接起来的表达式就是关系表达式。由关系运算符连接起来的表达式就是关系表达式。n n关关系系表表达达式式的的解解只只有有一一个个逻逻辑辑值值,真真或或假假,CC语语言言用用整整数数

8、11表示真,整数表示真,整数00表示假。表示假。n n注意区分关系运算符注意区分关系运算符“=”和赋值运算符和赋值运算符“=”。第11 页,本讲稿共53 页 例:#include stdio.hvoid main()int x,y,z1,z2;x=2;y=2;z1=(x=y);z2=(x=y);printf(%d,%dn,z1,z2);第12 页,本讲稿共53 页n n六六个个关关系系运运算算符符中中的的“!=!=”和和“=”的的优优先先级级小小于于其余四个运算符。其余四个运算符。n n关系运算符的优先级小于算术运算符,关系运算符的优先级小于算术运算符,n n 关系运算符的结合性均为自左至右。

9、关系运算符的结合性均为自左至右。n n当当多多种种运运算算符符在在一一个个表表达达式式中中同同时时使使用用时时,要要注注意意运运算算符符的的优优先先级级,防防止止记记错错运运算算符符优优先先级级的的最最好好方方法是加圆括号。法是加圆括号。第13 页,本讲稿共53 页例:#include stdio.hvoid main()int x,y,z,i,j,k;x=4;y=3;z=2;i=yz;j=xyz;k=(x=y);printf(%d,%d,%d,i,j,k);第14 页,本讲稿共53 页例 int a=3,b=2,c=1,d,f;ab(ab)=c(ab)=c b+cb f=abc/表达式值1/

10、表达式值1/表达式值0/d=1/f=0第15 页,本讲稿共53 页例例 5278 5278在在CC中是允许的,中是允许的,值为值为0例 int i=1,j=7,a;a=i+(j%4!=0);则a=2例 a0 结果为 A100 结果为10第16 页,本讲稿共53 页3.3.2 逻辑运算符 n n如如果果将将“与与、或或、非非”运运算算应应用用于于逻逻辑辑值值(逻逻辑辑真真和和逻逻辑辑假)则称为逻辑运算。假)则称为逻辑运算。n nCC语言中的逻辑运算符有三个:语言中的逻辑运算符有三个:逻辑与逻辑与&、逻辑或、逻辑或|和逻辑非!和逻辑非!n n 其其中中逻逻辑辑与与和和逻逻辑辑或或是是二二元元运运算

11、算符符,而而逻逻辑辑非非是是一一元元运运算符。算符。第17 页,本讲稿共53 页逻辑运算的规则与二进制的位逻辑是相似的。逻辑运算的规则下表:第18 页,本讲稿共53 页n n C语言系统对任何非0值都认定为是逻辑真,而将0认定为逻辑假。n n 但注意,系统逻辑运算的结果仍然只有两个:1(逻辑真)和0(逻辑假)。n n 逻辑运算符经常与关系运算符一起使用。例:C语言表达式(x=10)&(x=100)的数学含义是:10 x100 第19 页,本讲稿共53 页n n 逻辑运算符的优先级!&|高 低n n!的优先级高于算术运算符(当然也高于关系运算符),&和|的优先级低于算术运算符和关系运算符。n n

12、!单目运算符,其结合性是自右至左;&和|的结合性是自左至右。n n 例:计算表达式79-!0的值 第20 页,本讲稿共53 页 注意:在C语言中,如果逻辑运算符的左操作数已经能够确定表达式的解,则系统不再计算右操作数的值。例:int x=2,y=1,i,j;i=(x=1&y=1);j=(x=2|y=2);printf(“%d,%d”,i,j);第21 页,本讲稿共53 页 CC语语言言中中提提供供的的唯唯一一的的一一个个三三目目运运算算符符就就是是条条件件运运算符算符“?:?:”,它的运算对象有三个。,它的运算对象有三个。条件运算符的语法格式是:条件运算符的语法格式是:表达式表达式1 1?表达

13、式?表达式2 2:表达式:表达式33 包包括括了了条条件件运运算算符符的的条条件件表表达达式式的的计计算算方方法法是是:首首先先计计算算表表达达式式11的的值值,若若表表达达式式11为为真真,条条件件表表达达式式的的解解取取表表达达式式22的的值值,表表达达式式11为为假假,条条件件表表达式的解取表达式达式的解取表达式33的值。的值。3.5 条件运算符 第22 页,本讲稿共53 页n n 例 例:ab?a:b:ab?a:b 当当abab时,表达式的值为时,表达式的值为aa,否则为,否则为bbn n例例:c=ab?a:b:c=ab?a:b 将将aa和和bb中比较大的值赋给中比较大的值赋给cc。条

14、件运算符 第23 页,本讲稿共53 页例:用条件表达式求三个整数中的最大数。#include stdio.h#include stdio.h/*max of a/*max of a、bb、c*/c*/void main()void main()int a,b,c;int a,b,c;printf(Pleae input three int:);printf(Pleae input three int:);scanf(%d%d%d,&a,&b,&c);scanf(%d%d%d,&a,&b,&c);printf(Max is%d printf(Max is%d,(ab?a:b)c)?(ab?a:b

15、):c);,(ab?a:b)c)?(ab?a:b):c);第24 页,本讲稿共53 页例:将输入的字母小写变大写。#include stdio.h#include stdio.h#include string.h#include string.hvoid main()void main()char c;char c;puts(please input one char:);puts(please input one char:);c=getchar();c=getchar();c=(c=a?(c+A-a):c);c=(c=a?(c+A-a):c);putchar(c);putchar(c);p

16、utchar(n);putchar(n);第25 页,本讲稿共53 页3.6 数据类型间的转换n n 自动转换 n n 强制转换 第26 页,本讲稿共53 页自动转换 自自动动转转换换:就就是是系系统统根根据据规规则则自自动动将将两两个个不不同同数数据据类型的运算对象转换成同一种数据类型的过程。类型的运算对象转换成同一种数据类型的过程。原则:低数据类型转化为高数据类型。原则:低数据类型转化为高数据类型。第27 页,本讲稿共53 页n n 例:1、int i;float f;f8i-float 2、int i;char c;c+i-int第28 页,本讲稿共53 页强制转换 在 在C C语 语言

17、 言中 中,允 允许 许程 程序 序员 员根 根据 据自 自己 己的 的意 意愿 愿将 将一 一种 种数 数据 据类型强制转换成另一种数据类型。类型强制转换成另一种数据类型。强制转换的格式为:强制转换的格式为:(数据类型名数据类型名)操作对象操作对象 注注意意,强强制制转转换换并并不不改改变变操操作作对对象象的的数数据据类类型型和和数数值值。例例如如,(int)f(int)f的的确确切切含含义义是是将将ff转转换换成成为为整整型型值值参参与运算,而与运算,而ff本身的数据类型和数值都没有任何改变。本身的数据类型和数值都没有任何改变。第29 页,本讲稿共53 页n n 比较:(float)i+3

18、 和(float)(i+3)n n 建议:任何情况下都对实行类型转换的表达式使用括号。第30 页,本讲稿共53 页3.7 赋值运算符 n n 普通赋值运算符 赋值表达式的一般形式是:变量名=表达式 赋值语句的一般形式是:变量名=表达式;赋值运算符的优先级小于算术运算符。赋值运算符的结合性是自右至左,例:a=b=2 第31 页,本讲稿共53 页n n 注意:赋值运算符的类型是被赋值的变量的类型,若两端类型不同,会发生类型换。无法赋值给常量和表达式 例:5=a+8,a+2=c+3,是非法的。赋值运算符右边的表达式还可以是一个赋值表达式,构成多重赋值。例:a=b=2第32 页,本讲稿共53 页n n

19、 例:计算下列表达式的值:int a,b;a=3;a=3;a=1;b=0;b=0;b=1;/a=3/表达式值1/表达式值0/表达式值1/表达式值0/b=0第33 页,本讲稿共53 页n n 复合赋值运算符 把 把赋 赋值 值运 运算 算符 符与 与算 算术 术、位 位逻 逻辑 辑、移 移位 位运 运算 算符 符放 放在 在一 一起 起,就构成复合赋值运算符。就构成复合赋值运算符。复合算术赋值运算符有 复合算术赋值运算符有55个个+=+=、-=-=、*=*=、/=/=、%=%=。还还有有与与移移位位和和位位逻逻辑辑结结合合的的复复合合赋赋值值运运算算符符55个个(=、&=&=、=、|=|=)。)

20、。复合赋值运算符的使用规则是:复合赋值运算符的使用规则是:Xop=Y Xop=Y与 与X=XopY X=XopY等价。等价。第34 页,本讲稿共53 页例:#include stdio.hvoid main()int c;/*char c;*/c=B;printf(c=%c,c+a-A);第35 页,本讲稿共53 页3.8 位逻辑运算符n n 类型:类型:&、|、n n 功 功能 能:按 按位 位与 与、按 按位 位或 或、按 按位 位异 异或 或、左 左移 移、右 右移 移、按 按位取反 位取反n n操操作作数数在在实实现现位位操操作作时时按按二二进进制制进进行行运运算算,一一般般应应为无符

21、号型整数。为无符号型整数。n n除除是一元运算符,其它的都是二元运算符是一元运算符,其它的都是二元运算符第36 页,本讲稿共53 页按位与&按位与的运算规则是:0&0=00&1=01&0=01&1=1例如:charw1,w2,w3;w1=10;w2=8;w3=w1&w2;w3的内容可以通过下式运算:0000101000001000(按位与&)00001000(结果)第37 页,本讲稿共53 页&运算经常用于把特定位清零(屏蔽)。例如,a的值为11011010,b的值为11110000,a&b11011010&1111000011010000相当于把a的低4位屏蔽,高4位不变。第38 页,本讲稿

22、共53 页按位或|按位或的运算规则是:0|0=0 0|1=1 1|0=1 1|1=1例如:char w1,w2,w3;w1=10;w2=8;w3=w1|w2;w3的内容可以通过下式运算:00001010 00001000(按位或|)00001010(结果)第39 页,本讲稿共53 页|运算经常用于把特定位置1。例如,a的值为11011010,b的值为11110000,a|b11011010|1111000011111010相当于把a的高4位置1,低4位不变。第40 页,本讲稿共53 页按位异或按位或的运算规则是:0 0=0、0 1=1 1 0=1 1 1=0例如:char w1,w2,w3;w1=10;w2=8;w3=w1w2;w3的内容可以通过下式运算:00101010 00011000(按位异或)00110010(结果)第41 页,本讲稿共53 页按位取反 按位取反的规则是:0=1 1=0第42 页,本讲稿共53 页

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

当前位置:首页 > 生活休闲 > 资格考试

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

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