版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三讲第三讲运算符及表达式运算符及表达式运算符表达式a+b/2.0-c代表对数据的加工处理方法,用于执行对目标数据(操作数)的运算变量用来存放数据;运算符用来处理数据用运算符将操作数据对象(操作数,包括变量和常量)连接起来的,符合C语法规则的式子2 运算符的分类:运算符的分类: 单目运算符:单目运算符:只带一个操作数的运算符。如:只带一个操作数的运算符。如:+、-运算符。运算符。 双目运算符:双目运算符:带两个操作数的运算符。如:带两个操作数的运算符。如:+、-运算符。运算符。 三目运算符:三目运算符:带三个操作数的运算符。如带三个操作数的运算符。如?:运算符。运算符。 学习学习运算符时应注意
2、:运算符时应注意: 运算符的运算符的功能功能:该运算符主要用于做什么运算。:该运算符主要用于做什么运算。与运算量与运算量关系关系:要求运算量的个数及运算量的类型。:要求运算量的个数及运算量的类型。运算符的运算符的优先级优先级:表达式中包含多个不同运算符时运算符:表达式中包含多个不同运算符时运算符运算的先后次序。运算的先后次序。运算符的运算符的结合性结合性:同级别运算符的运算:同级别运算符的运算顺序顺序(指指左结合性还左结合性还是右结合是右结合性性)。运算结果的运算结果的类型类型:表达式运算后最终所得到的值的类型。:表达式运算后最终所得到的值的类型。3C运运算算符符算术运算符:+ - * / %
3、 + -关系运算符: = !=逻辑运算符:! & |位运算符 : | &赋值运算符:= 条件运算符:?:逗号运算符:,指针运算符:* &求字节数:sizeof强制类型转换:类型分量运算符:. -下标运算符:其它 :( ) -41. 赋值运算符、赋值表达式赋值运算符、赋值表达式 赋值运算符(“”,双目运算符) l 一般形式:变量变量 = 常量或变量或表达式常量或变量或表达式l 功能:将右边常量或变量或表达式的值赋给左边变量 例如: int x, y, z; x = 20; y = x; z = x + y; 赋值表达式 l 定义: 由赋值运算符或复合赋值运算符(后面即将介
4、绍),将一个变量和一个表达式连接起来的表达式,称为赋值表达式。l 一般格式:变量变量 (复合)赋值运算符(复合)赋值运算符 表达式表达式l 赋值表达式的值:被赋值变量的值。例如:“a = 5”这个赋值表达式,变量a的值“”就是它的值。 5 结果:结果:a、b、c的值都为的值都为10 注意:注意: “=”左边必须是变量名或对应某特定内存单元的表达式,不左边必须是变量名或对应某特定内存单元的表达式,不能是常量或其它表达式。能是常量或其它表达式。 例如:例如:30 = a; b + 2 = 5; 都是错误的。都是错误的。 “=”不是代数中相等的意思。相等的判断由关系运算符不是代数中相等的意思。相等的
5、判断由关系运算符“= =” 实现。实现。62. 赋值过程中的数据类型转换 。 高位部分补高位部分补0例如:例如: unsigned char ch = 0 xfc; /占用占用1个字节个字节 unsigned int a = 0 xff00; /假设假设2个字节个字节 int b; /假设假设2个字节个字节 unsigned long u; /占用占用4个个字节字节 b = ch; u = a; 如果将如果将ch的值赋给的值赋给-4,问问b的值又是多少呢?的值又是多少呢? 0 x00fc b的值为0 x00fcu的值为0 x0000ff0072.赋值过程中的数据类型转换 例如:例如: char
6、 ch = 2; short int a = -2; int b; /假设为假设为2个字节个字节 unsigned int u; /假设为假设为4个字节个字节 b = ch; u = a; b的值为0 x0002u的值为0 xfffffffe82.赋值过程中数据类型转换 例如:例如: int a = -32768; /假设为假设为2个字节个字节 unsigned long b = 0 xffffaa00; char ch; int c; ch = a; c = b; 例如: int a = 0 xff00; unsigned int b = a; /假设为2个字b的值为0 xff00ch的值为
7、0 x00c的值为0 xaa0092.赋值过程中的数据类型转换 强制转换 强制类型转换是通过类型转换运算符来实现的。其一般形式为: (类型说明符类型说明符) (表达式表达式) 功能:把表达式的运算结果强制转换成类型说明符所表示的类型。其中,(类型说明符)是强制类型转换符,它的优先级比较高。 例: float x = 3.5, y = 2.1, z; int a; a = (int)(x+y); z = (int)x+y; z = (double)(3/2); a = (int)3.6; /结果为5 /结果为5.100000 /结果为1.000000 /结果为3注意精注意精度损失度损失问题!问题
8、!注意:注意: 类型说明符和表达式都必须类型说明符和表达式都必须加括号加括号(单个变量可以不加括号单个变量可以不加括号)。 无论是强制转换或是自动转换,都只是为了本次运算的需要而对变无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的量的数据长度进行的临时性转换临时性转换,而不改变数据说明时对该变量定义,而不改变数据说明时对该变量定义的类型。的类型。10 基本算术运算符: + - * / %l 结合性:左结合性左结合性l 优先级:先* / % 后 + -l “-”可为单目运算符时,右结合性l /两整数相除,结果为整数,否则为小数l %要求两侧均为整型数据3. 算术运算符
9、、算术表达式 5%-2结果 -5%-2结果 1-111 表达式和算术表达式3. 算术运算符、算术表达式 运算符优先级(到目前为止) 高低12 自增、自减运算符+ -l 作用:使变量值加1或减1l 种类: 前置前置 +i, -i (先执行先执行i=i+1或或i=i-1,再使用再使用i值值) 后置后置 i+,i- (先使用先使用i值值,再执行再执行i=i+1或或i=i-1) /k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=44. 自增自减运算符、负号运算符 负号运算符(“-”) ():一个算术运算符(双目)+一个负号运算符(单目) 例如:a = 2,那么a的值就是2。 负
10、号运算符的优先级比较高,与强制类型转换符( )是同一个级别。 应避免13 自增、自减运算符注意事项 +和-运算符只能用于变量,不能用于常量和表达式。 因为+和-蕴含着赋值操作。 例如:5+、-(a+b)都是非法的表达式。 负号运算符、+、-和强制类型转换运算符的优先级相同,当这些运算符连用时,按照从右向左的顺序计算,即具有右结合性。 两个和之间不能有空格。 在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法最好避免这种用法。 例如:+i+是非法的。 自增、自减运算,常用于循环语句中常用于循环语句中,使循环控制变量加(或减)1,以及指针变量中,使指针指向下(或上)一
11、个地址。4. 自增自减运算符、负号运算符145. 算术运算符中数据类型转换规则 156.关系运算符、逻辑运算符、条件运算符1. 关系运算符和关系表达式 关系运算符含 义优 先 级结 合 性大于这些关系运算符等优先级,但比下面的优先级高左结合性= (和=之间没有空格)大于或等于小于= ( c d x 3 / 2 a + 1 c i 5 * j = k + 1 注意:注意: C语言用语言用0表示假,非表示假,非0表示真。表示真。 一个关系表达式的值不是一个关系表达式的值不是0就是就是1,0表示假,表示假,1表示真。表示真。16 已知:已知:a = 1; b = 2; c = 3; 问:问:d =
12、a != c = a b b (a b) = c b + c b f = a b c17 关系运算注意:例例 应避免对应避免对实数实数作相等或不等的判断作相等或不等的判断如如 1.0/3.0*3.0=1.0 结果为结果为可改写为:可改写为:fabs(1.0/3.0*3.0-1.0)1e-618 逻辑运算符含 义结 合 性优先级关系!单目运算符,逻辑非,表示相反右结合性 高 低& (两个&之间没有空格)双目运算符,逻辑与,表示并且左结合性| (两个|之间没有空格)双目运算符,逻辑或,表示或者AB!A!BA & BA | B假假1100假真1001真假0101真真0011
13、19 a b & b 10 | x 3 & 2 | 8 3 & 2 | 8 0 ? 1 : (x b ? a : c d ? c : d a b ? a : (c d ? c : d) expr1、expr2、expr3类型可不同,表达式值取较高的类型227. 位运算符、位运算表达式 位运算符:按位与(&)、按位或(|)、按位取反()、按位异或()、左移()六种。 左移() 实现将某变量所对应的二进制数往左移位,溢出的最高位被丢掉,空出的低位用零填补。其一般格式为: 返回整型值的表达式返回整型值的表达式 返回整型值的表达式返回整型值的表达式例: int a =
14、3; a 2:将a所对应的二进制数左移两位,该表达式的值为12。 2 ) 右移运算实现将某变量所对应的二进制数往右移位,溢出的最低位被丢掉,如果变量是无符号数,空出的高位用零填补,如果变量是有符号数,空出的高位用原来的符号位填补(即负数填1,正数填0)。其一般格式为: 返回整型值的表达式返回整型值的表达式 返回整型值的表达式返回整型值的表达式例:int a = 8; a 2:将a所对应的二进制数右移两位,该表达式的值为2。 237. 位运算符、位运算表达式位运算符、位运算表达式 按位或(按位或( | )(一真即真)(一真即真) 如果两个数对应的位全为如果两个数对应的位全为0,对应的结果位值为,
15、对应的结果位值为0,否则,否则,对应的结果位值为对应的结果位值为1。 按位与(按位与(&) (一假即假)(一假即假)如果两个数对应的位全为如果两个数对应的位全为1,对应的结果位值为,对应的结果位值为1,否,否则,对应的结果位值为则,对应的结果位值为0 。按位取反(按位取反( )是个单目运算符。如果一个数的原来对应的位为是个单目运算符。如果一个数的原来对应的位为1,对应的结果位值为对应的结果位值为0;如果一个数的原来对应的位为;如果一个数的原来对应的位为0,对应的结果位值为对应的结果位值为0,对应的结果位值为,对应的结果位值为1 。例:例:int a = 8,b=9,c=12,d=3;
16、a |b的值的值等于等于 。 c|d的值等于的值等于例:例:int a = 8,b=9,c=12,d=3; a &b的值等于的值等于 。 c&d的值等于的值等于例:例:int a = 8,b=9; a 的值等于的值等于 。 d的值等于的值等于91580-9 -10247. 位运算符、位运算表达式位运算符、位运算表达式 位运算之间的优先级位运算之间的优先级 & |按位异或(按位异或()(不同即真)(不同即真)如果两个数对应的位的值不同,对应的结果位值为如果两个数对应的位的值不同,对应的结果位值为1;否;否则,对应的结果位值为则,对应的结果位值为0。例:例:int a =
17、8,b=9; a b的值等于的值等于1高高低低258. 逗号运算符、逗号表达式 位运算符:, 逗号表达式:用逗号连接起来的表达式。其一般形式为: 表达式表达式1,表达式,表达式2,表达式,表达式k 优先级:优先级最低。 结合性:左结合性 。即逗号表达式的求值顺序是从左向右依此计算用逗号分隔的各表达式的值。 逗号表达式的值:最后一个表达式的值就是整个逗号表达式的值。 用途:常用于循环for语句中。例如:a+3, b=4, b+ 例: a = 3 * 5, a * 4 a = 3 * 5, a * 4, a + 5例: x = (a = 3, 6 * 3) x = a = 3, 6 * a例:a
18、= 1; b = 2; c = 3; printf (“%d,%d,%d”, a, b, c); printf (“%d,%d,%d”, (a, b, c), b, c); /a=15,表达式值60/a=15,表达式值20/赋值表达式,表达式值18,x=18/逗号表达式,表达式值18,x=3/1,2,3/3,2,3例例:#include void main ( ) int x, y = 7; float z = 4; x = (y = y + 6, y / z); printf (x = %dn, x);运行结果:运行结果:x = 3269. sizeof运算符、复合运算符 sizeof运算符 功能:获取变量和数据类型所占内存大小
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区民情民意工作制度
- 社区青年驿站工作制度
- 未来五年新形势下电子通信广电工程设计行业顺势崛起战略制定与实施分析研究报告
- 新乡市延津县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 黄山市徽州区2025-2026学年第二学期五年级语文第六单元测试卷(部编版含答案)
- 张家口市宣化县2025-2026学年第二学期六年级语文第四单元测试卷(部编版含答案)
- 邵阳市洞口县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 阜阳市太和县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 邵阳市新宁县2025-2026学年第二学期四年级语文第四单元测试卷(部编版含答案)
- 延安市安塞县2025-2026学年第二学期五年级语文第六单元测试卷(部编版含答案)
- 索尼摄像机DCR-HC21E说明书
- 豪宅防水策划方案(3篇)
- 中国天眼简介
- 小红书电商学习中心 -新手小白也能上手的0-1起号策略
- 《义务教育数学课程标准(2022年版)》解读课件
- 脑血管介入科进修汇报
- 卡迪滚筒洗衣机 GO4 DF86说明书
- 部编版八下历史期末复习常考观点速记(新考向)
- 扶梯施工安装管理制度
- 铝锭居间合同协议
- 重症医学教材
评论
0/150
提交评论