书签 分享 收藏 举报 版权申诉 / 38
上传文档赚钱

类型2.3运算符和表达式学习培训模板课件.ppt

  • 上传人(卖家):林田
  • 文档编号:4094615
  • 上传时间:2022-11-10
  • 格式:PPT
  • 页数:38
  • 大小:87KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《2.3运算符和表达式学习培训模板课件.ppt》由用户(林田)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    2.3 运算 表达式 学习 培训 模板 课件
    资源描述:

    1、l2.3.1 2.3.1 l2.3.2 2.3.2 算术运算符算术运算符l2.3.3 2.3.3 赋值运算符赋值运算符l2.3.4 2.3.4 不同数据类型数据间的混合运算不同数据类型数据间的混合运算l2.3.5 2.3.5 关系运算符关系运算符l2.3.6 2.3.6 逻辑运算符逻辑运算符l2.3.7 2.3.7 增增1/1/减减1 1运算符运算符l2.3.8 2.3.8 位逻辑运算符位逻辑运算符l2.3.9 2.3.9 其它运算符其它运算符l表达式的概念表达式的概念 表达式是用运算符与圆括号将操作数连接起来所表达式是用运算符与圆括号将操作数连接起来所构成的式子。构成的式子。C语言的操作数包

    2、括常量、变量、函数值语言的操作数包括常量、变量、函数值等。等。根据表达式进行运算,得到的数值即为表达式的解。根据表达式进行运算,得到的数值即为表达式的解。l表达式与简单语句表达式与简单语句 在在C语言中,在一个表达式的后面加上分号语言中,在一个表达式的后面加上分号“;”就构成了简单语句。就构成了简单语句。有意义的简单语句有意义的简单语句 无无意义的简单语句意义的简单语句 l种类及运算种类及运算 +-*/%注意注意:v 两个整数相除,结果仍为整数,商向下取整。两个整数相除,结果仍为整数,商向下取整。v 取模运算符取模运算符%实际上是数学运算的求余数运算,实际上是数学运算的求余数运算,其两个操作对

    3、象都必须是整数其两个操作对象都必须是整数。v 减法运算符还可以用做单目运算符,是取负减法运算符还可以用做单目运算符,是取负v运算。其余操作符均为双目运算符。运算。其余操作符均为双目运算符。l算术表达式及算术运算符的优先级算术表达式及算术运算符的优先级 算术表达式就是用算术运算符和圆括号将算术表达式就是用算术运算符和圆括号将操作数连接起来的式子。算术表达式的解就是操作数连接起来的式子。算术表达式的解就是经过算术运算得到的表达式的值。经过算术运算得到的表达式的值。算术运算符的优先级与数学基本相同,即算术运算符的优先级与数学基本相同,即先乘除,后加减。取模运算的优先级与乘除相先乘除,后加减。取模运算

    4、的优先级与乘除相同。函数和圆括号的优先级最高。同。函数和圆括号的优先级最高。注意:注意:v 算术表达式应能正确的表达数学公式。算术表达式应能正确的表达数学公式。例如:数学表达式是例如:数学表达式是 3+x3+x 2a 2a 相应的相应的C C语言表达式应该是什么呢?语言表达式应该是什么呢?v 算术表达式的结果应该不超过其所能表示的算术表达式的结果应该不超过其所能表示的 数的范围。例如,最大的整型数是数的范围。例如,最大的整型数是3276732767,那么,那么,32767+332767+3就不会是正确的结果。而就不会是正确的结果。而 32767L+332767L+3的结果是正确的,因为的结果是

    5、正确的,因为32767L32767L是长是长 整型数。整型数。l算术运算符的结合性算术运算符的结合性 运算符的结合性是指如果一个操作数左边和运算符的结合性是指如果一个操作数左边和右边的两个运算符的优先级相同,应该优先计算右边的两个运算符的优先级相同,应该优先计算的操作符。的操作符。例如:例如:a+b-c 操作数操作数b左右的运算符左右的运算符+和和-的优先级相同,的优先级相同,那么,是先计算那么,是先计算b-c,还是先计算,还是先计算a+b呢?呢?C语言语言规定双目算术运算符的结合性是自左至右,也就规定双目算术运算符的结合性是自左至右,也就是是b先与左边先与左边a结合,再与右边结合,再与右边c

    6、结合。所以是先结合。所以是先计算计算a+b,然后用,然后用a+b的结果减的结果减c。双目运算符的结合性与数学运算并无不同。双目运算符的结合性与数学运算并无不同。l普通赋值运算符普通赋值运算符 赋值表达式的一般形式是:赋值表达式的一般形式是:变量名变量名=表达式表达式 赋值语句的一般形式是:赋值语句的一般形式是:变量名变量名=表达式;表达式;赋值运算符的优先级小于算术运算符。赋值运算符的优先级小于算术运算符。赋值运算符的结合性是自右至左,赋值运算符的结合性是自右至左,以以a=b=2为例为例 l复合赋值运算符复合赋值运算符 把赋值运算符与算术、位逻辑、移位运算把赋值运算符与算术、位逻辑、移位运算符

    7、放在一起,就构成复合赋值运算符。符放在一起,就构成复合赋值运算符。复合算术赋值运算符有复合算术赋值运算符有5个个+=、-=、*=、/=、%=。还有与移位和位逻辑结合的复合赋值运算符还有与移位和位逻辑结合的复合赋值运算符5个(个(=、&=、=、|=)。)。复合赋值运算符的使用规则是:复合赋值运算符的使用规则是:Xop=YXop=Y与与X=XopYX=XopY等价。等价。l 自动转换自动转换 l 强制转换强制转换 l 赋值表达式的类型转换赋值表达式的类型转换 自动转换自动转换 所谓所谓“自动转换自动转换”就是系统根据规则自动就是系统根据规则自动将将两个不同数据类型的运算对象转换成同一种数两个不同数

    8、据类型的运算对象转换成同一种数据类型的过程。而且,对某些数据类型,即使据类型的过程。而且,对某些数据类型,即使是两个运算对象的数据类型完全相同,也要做是两个运算对象的数据类型完全相同,也要做转换,例如转换,例如float。float double 高 long unsigned char、short int 低 强制转换强制转换 在在C语言中,允许程序员根据自己的意愿将语言中,允许程序员根据自己的意愿将一种数据类型强制转换成另一种数据类型。一种数据类型强制转换成另一种数据类型。强制转换的格式为:强制转换的格式为:(数据类型名数据类型名)操作对象操作对象注意注意,强制转换并不改变操作对象的数据类

    9、型,强制转换并不改变操作对象的数据类型和数值。例如,和数值。例如,(int)f的确切含义是将的确切含义是将f转换成转换成为整型值参与运算,而为整型值参与运算,而f本身的数据类型和数本身的数据类型和数值都没有任何改变。值都没有任何改变。赋值表达式的类型转换赋值表达式的类型转换 当赋值运算符左边的变量与赋值运算符右当赋值运算符左边的变量与赋值运算符右边的表达式的数据类型相同时,不需要进行数边的表达式的数据类型相同时,不需要进行数据类型的转换。据类型的转换。当赋值运算符左边的变量与赋值运算符右当赋值运算符左边的变量与赋值运算符右边的表达式的数据类型不相同时,系统负责将边的表达式的数据类型不相同时,系

    10、统负责将右边的数据类型转换成左边的数据类型。此时,右边的数据类型转换成左边的数据类型。此时,会有两种情况产生,一种是转换以后会丢失数会有两种情况产生,一种是转换以后会丢失数据,另一种是转换以后不会丢失数据。这与赋据,另一种是转换以后不会丢失数据。这与赋值号两边的表达式的数据类型所占的字节数及值号两边的表达式的数据类型所占的字节数及存储表示方式有关。存储表示方式有关。(详细内容自学)详细内容自学)例例3.1#include stdio.hvoid main()int c;/*char c;*/c=B;printf(c=%c,c+a-A);运行结果:运行结果:c=b例例3.2#include st

    11、dio.hvoid main()char c;int i=0 x3241;printf(i=%cn,i);c=i;printf(c=%dn,c);printf(i=%dn,i);运行结果运行结果i=Ac=65i=12865l 所谓关系运算,实际上就是比较两个数值所谓关系运算,实际上就是比较两个数值的大小。那么,比较两个数值的大小的运算符的大小。那么,比较两个数值的大小的运算符就是关系运算符。就是关系运算符。关系运算符有六个关系运算符有六个、=、z;j=xyz;printf(%2d,%2d,i,j);printf(%2d,zy=3);printf(%2d,y+z=z+1);运行结果为:运行结果为

    12、:1,0,0,0,1 如果将如果将“与、或、非与、或、非”运算应用于逻辑值运算应用于逻辑值(逻辑真和逻辑假)则称为逻辑运算。(逻辑真和逻辑假)则称为逻辑运算。C语言中的逻辑运算符有三个:语言中的逻辑运算符有三个:逻辑与逻辑与&、逻辑或、逻辑或|和逻辑非和逻辑非!其中逻辑与和逻辑或是双目运算符,而逻辑其中逻辑与和逻辑或是双目运算符,而逻辑非是单目运算符。非是单目运算符。A B!A!B A&B A|B 逻辑真 逻辑真 逻辑假 逻辑假 逻辑真 逻辑真 逻辑真 逻辑假 逻辑假 逻辑真 逻辑假 逻辑真 逻辑假 逻辑真 逻辑真 逻辑假 逻辑假 逻辑真 逻辑假 逻辑假 逻辑真 逻辑真 逻辑假 逻辑假 逻辑运

    13、算的规则与二进制的位逻辑是相逻辑运算的规则与二进制的位逻辑是相似的。似的。逻辑运算的规则下表:逻辑运算的规则下表:C语言系统对任何非语言系统对任何非0值都认定为是逻辑值都认定为是逻辑真,而将真,而将0认定为逻辑假。认定为逻辑假。如果一个表达式参与逻辑运算,只要这个如果一个表达式参与逻辑运算,只要这个表达式的解为非表达式的解为非0,则系统就认为这个表达式,则系统就认为这个表达式的结果是逻辑真。的结果是逻辑真。但是要注意,系统逻辑运算的结果仍然只但是要注意,系统逻辑运算的结果仍然只有两个:有两个:1(逻辑真)和(逻辑真)和0(逻辑假)。(逻辑假)。逻辑运算符经常与关系运算符一起使用。逻辑运算符经常

    14、与关系运算符一起使用。C C语言表达式语言表达式(x=10)&(x=10)&(x=100)的数学含的数学含义是:义是:1010 x x100100 逻辑运算符的优先级逻辑运算符的优先级 !&|高高 低低 !的优先级高于算术运算符(当然也高于!的优先级高于算术运算符(当然也高于关系运算符)和赋值运算符关系运算符)和赋值运算符&和和|的优先级高于赋值运算符,但是低的优先级高于赋值运算符,但是低于算术运算符和关系运算符。于算术运算符和关系运算符。!单目运算符,其结合性是自右至左;!单目运算符,其结合性是自右至左;&和和|的结合性是自左至右。的结合性是自左至右。计算表达式计算表达式79-!079-!0

    15、的值的值 注意注意:在在C C语言中,如果逻辑运算符的左操作数语言中,如果逻辑运算符的左操作数已经能够确定表达式的解,则系统不再计算右已经能够确定表达式的解,则系统不再计算右操作数的值。操作数的值。x=1&y=0 x=1&y=0 若若x x此时不为此时不为1 1,在检测,在检测x=1x=1以后,就不以后,就不会再检测会再检测y=0y=0。因为。因为x=1x=1的结果是逻辑假,逻的结果是逻辑假,逻辑假与任何数进行逻辑与操作结果都会是逻辑辑假与任何数进行逻辑与操作结果都会是逻辑假。假。x=y|x=0 若若x=y成立,则表达式的值为真,不需要继成立,则表达式的值为真,不需要继续做续做x=0了。但是,

    16、若了。但是,若x=y不成立,由于不成立,由于x=0是是个赋值表达式,表达式的结果很可能是错误的。个赋值表达式,表达式的结果很可能是错误的。假设该表达式计算以前,假设该表达式计算以前,x值为,值为,y的值为,的值为,x=y的计算结果是,这时需要执行赋值的计算结果是,这时需要执行赋值x=0,表达式的结果仍然是,而实际上这时的表达式的结果仍然是,而实际上这时的x和和y的值均为,又满足了的值均为,又满足了x=y,这不是产生了矛,这不是产生了矛盾吗?盾吗?不要在一般的表达式中夹杂赋值运算不要在一般的表达式中夹杂赋值运算 +和和-。这两个运算符都是单目运算符,其功能分别这两个运算符都是单目运算符,其功能分

    17、别是将变量自身的内容增是将变量自身的内容增1和减和减1。+i和和-i是前缀表示法,是前缀表示法,i+和和i-是后缀表是后缀表示法。如果直接在示法。如果直接在+i和和i+的后面加上分号构的后面加上分号构成成C的执行语句,即的执行语句,即+i;和和i+;前缀与前缀与后缀并无区别(减符号也一样)。但是,将后缀并无区别(减符号也一样)。但是,将它们用在表达式中则前缀与后缀是有区别的。它们用在表达式中则前缀与后缀是有区别的。前缀表示法是先将前缀表示法是先将i值增值增/减减1,再在表达,再在表达式中使用;而后缀表示法是先在表达式中使式中使用;而后缀表示法是先在表达式中使用用i的值,再将的值,再将i值增值增

    18、/减减1。例如:例如:i=3;i=3;j=i+;j=+i;结果结果 j的内容为的内容为3 j的内容为的内容为4 i的内容为的内容为4 i的内容为的内容为4 注意:注意:v 增增1/1/减减1 1运算符的操作对象是一个变量运算符的操作对象是一个变量 2+2+、-2-2以及以及(x/y)+(x/y)+均为非法均为非法v 增增1/1/减减1 1运算符的优先级高于算术运算符,运算符的优先级高于算术运算符,与单目运算符与单目运算符-(取负)、!(逻辑非)的(取负)、!(逻辑非)的 优先级相同,结合方向自右至左。优先级相同,结合方向自右至左。例如表达式例如表达式 -i+-i+等价于等价于 -(i+)-(i

    19、+)v副作用:副作用:printf(“%d,%d”,i,i+);在不同在不同 的编译环境下结果有可能不同。的编译环境下结果有可能不同。v尽量不要在一般的表达式中将增尽量不要在一般的表达式中将增1/1/减减1 1运算运算 符与其它运算符混合使用。符与其它运算符混合使用。&|按位取反按位取反 左移左移 右移右移 按位与按位与 按位或按位或 按位异或按位异或 操作数在实现位操作时按二进制进行运算,操作数在实现位操作时按二进制进行运算,7 7一般应为无符号型整数。一般应为无符号型整数。按位与按位与&按位与的运算规则是:按位与的运算规则是:0&0=0 0&1=0 1&0=0 1&1=1例如:例如:cha

    20、r w1,w2,w3;w1=10;w2=8;w3=w1&w2;w3的内容可以通过下式运算:的内容可以通过下式运算:00001010 00001000 (按位与(按位与&)00001000 (结果)(结果)&运算经常用于把特定位清零(屏蔽)。运算经常用于把特定位清零(屏蔽)。例如,例如,a的值为的值为11011010,b的值为的值为11110000,a&b 11011010&11110000 11010000 相当于把相当于把a的低的低4位屏蔽,高位屏蔽,高4位不变。位不变。按位或按位或|按位或的运算规则是:按位或的运算规则是:0|0=0 0|1=1 1|0=1 1|1=1例如:例如:char

    21、w1,w2,w3;w1=10;w2=8;w3=w1|w2;w3的内容可以通过下式运算:的内容可以通过下式运算:00001010 00001000 (按位或(按位或|)00001010 (结果)(结果)按位异或按位异或按位或的运算规则是:按位或的运算规则是:0 0=0 0 1=1 1 0=1 1 1=0例如:例如:char w1,w2,w3;w1=10;w2=8;w3=w1w2;w3的内容可以通过下式运算:的内容可以通过下式运算:00001010 00001000 (按位异或(按位异或)00000010 (结果)(结果)按位取反按位取反 按位取反的规则是:按位取反的规则是:0=1 1=0注意:注

    22、意:对于位逻辑反来说,对于位逻辑反来说,0 x7在在16位机上的位机上的表示是表示是1111111111111000即即0 xfff8,但在,但在32位位机上的表示是机上的表示是0 xfffffff8,所以通常用,所以通常用0 x7 来表来表示示7的逻辑非,而不用的逻辑非,而不用0 xfff8或或oxfffffff8。移位运算符移位运算符 左移左移 双目运算符,运算符右边的表达式表示移位双目运算符,运算符右边的表达式表示移位的位数。的位数。x=x2 表示把表示把x进行左移以后赋值给进行左移以后赋值给x,注意注意 不能只用不能只用x2 左移可以扩大原数的倍数,左移位扩大左移可以扩大原数的倍数,左

    23、移位扩大倍,左移位扩大倍,倍,左移位扩大倍,。右移可以缩小。右移可以缩小原数的倍数。右移时,若符号位为,则右边原数的倍数。右移时,若符号位为,则右边填零。若符号位为填零。若符号位为,根据机器不同分为算术根据机器不同分为算术移位(填充)逻辑移位(填充)。移位(填充)逻辑移位(填充)。逗号运算符逗号运算符 表达式表达式1 1,表达式,表达式2 2 逗号表达式的求值过程是:先求解表达式逗号表达式的求值过程是:先求解表达式1 1,再求解表达式再求解表达式2 2,并将表达式,并将表达式2 2的解作为逗号表达的解作为逗号表达式的解。式的解。例如例如5,6 的值是的值是6 z=(y=3,x*y)与与z=x*

    24、(y=3)是等价的是等价的 逗号运算符一般用于循环逗号运算符一般用于循环for语句,不提倡使语句,不提倡使用在其它的表达式中。用在其它的表达式中。求字节数运算符求字节数运算符 sizeof是一个比较特殊的单目运算符,也是一个比较特殊的单目运算符,也是一个非常有用的运算符,经常用于动态分是一个非常有用的运算符,经常用于动态分配空间。配空间。其语法格式为:其语法格式为:sizeof(表达式表达式)表达式可以是变量名、常量、以及数据表达式可以是变量名、常量、以及数据类型名。类型名。它的功能是:求表达式中变量名所代表的它的功能是:求表达式中变量名所代表的存储单元所占的字节数;或是求表达式中常量存储单元

    25、所占的字节数;或是求表达式中常量的存储单元所占的字节数;或是求表达式中的的存储单元所占的字节数;或是求表达式中的数据类型表示的数据在内存单元中所占的字节数据类型表示的数据在内存单元中所占的字节数。数。sizeof(int)的结果是的结果是2,sizeof运算符比较灵活,同样是求整型运算符比较灵活,同样是求整型int数据所占的字节数,可以使用三种办法:数据所占的字节数,可以使用三种办法:(1)求求sizeof(int)(2)求求sizeof(10)(3)使用使用int a;求求sizeof(a)例例3.5 求各种有数据类型在内存中所占的位(求各种有数据类型在内存中所占的位(bit)数。)数。#include stdio.hvoid main(c)printf(char=%d bitn,8*sizeof(char);printf(short int=%d bitn,8*sizeof(short int);printf(int=%d bitn,8*sizeof(10);printf(long int=%d bitn,8*sizeof(10L);printf(float=%d bitn,8*sizeof(float);printf(double=%d bitn,8*sizeof(2.3);printf(china=%d bitn,8*sizeof(china);

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:2.3运算符和表达式学习培训模板课件.ppt
    链接地址:https://www.163wenku.com/p-4094615.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库