- 2022-08-23 发布 |
- 37.5 KB |
- 25页
申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
文档介绍
北大青岛c语言学习
运算符和表达式第三章\n回顾变量的定义常量的定义变量和常量的区别标识符的定义关键字的定义运算符的类型2\n目标解释赋值运算符理解算术表达式解释关系运算符和逻辑运算符理解位运算符和表达式解释类型转换理解运算符的优先级3\n表达式运算符和操作数的有效组合在程序执行的过程中,变量的实际值和表达式中出现的常量一起使用操作数运算符2*y+54\n赋值运算符可以用在任何有效的C表达式中通用的形式:变量名=表达式将同一个值赋给多个变量的操作叫做多重赋值但是,不能像下面的语句中那样赋值:a=b=c=10inta=intb=intc=105\n运算符分4类算术关系逻辑位一元、二元运算符都是算术运算符用于对包含关系运算符的表达式进行合并或取非测试两个变量或一个变量和一个常量之间的关系将数字按位进行计算6\n算术表达式在C中,可以用算术运算符、数字和字符操作数来表示数学表达式示例++i%75+(c=3+8)a*(b+c/d)227\n关系运算符和逻辑运算符2-1用于测试两个变量或一个变量和一个常量之间的关系运算符关系运算>大于>=大于等于<小于<=小于等于==等于!=不等于8\n关系运算符和逻辑运算符2-2逻辑运算符用于对包含关系运算符的表达式进行合并或取非使用逻辑运算符的表达式,返回0表示假,返回1表示真示例:if((a>10)&&(a<20))运算符逻辑运算&&与||或!非9\n位运算符2-1将数字转换成等价的二进制形式后再处理数据(按位表示法)运算符描述按位与(x&y)如果两个操作数的相应位均为1,则该位的结果值为1按位或(x|y)如果两个操作数的相应位有一个为1,则该位的结果值为1按位取反(~x)将操作数按位取反(0到1和1到0)按位异或(x^y)如果参加运算的两个操作数的相应位同号,则结果为0,异号则为110\n位运算符2-2示例操作数位操作位表达式数字10&151010&111110101010|151010|111111111510^151010^111101015~10~10101011-11位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字11\n类型转换运算符的操作数属于不同的数据类型,运算时通常会将这些操作数转换为同一类型charch;inti;floatf;doubled;result=(ch/i)+(f*d)-(f+i);intdoublefloatdoubledouble12\n转换通过使用转换可以将一个表达式强制转换成某一种类型。转换的通用语法是:(type)casttype任意有效的C数据类型示例:经过赋值运算后,(int)f返回的整型值重新转换为浮点数,f本身的值不变。floatx,f;f=3.14159;x=(int)f;13\n运算符优先级2-1优先级建立了计算算术表达式时,一组运算符相对于另一组的层次关系优先级指C计算运算符的顺序可通过将表达式括在括号中来改变运算符的优先级运算符类型运算符结合律一元-++--从右向左二元^从左向右二元*/%从左向右二元+-从左向右二元=从右向左14\n运算符优先级2-2当一个表达式中的运算符具有相同优先级时,结合律还指出C语言计算这些运算符的顺序示例:-8*4%2-3计算顺序如下:完成的操作结果-8(一元减法)-8-8*4-32-32%400-3-315\n比较运算符之间的优先级不存在相对于其他算术运算符有较高的优先级始终按从左向右顺序进行计算16\n逻辑运算符优先级2-1优先级运算符1非2与3或当条件中有多个逻辑运算符时,计算将从右向左进行17\n逻辑运算符优先级2-2考虑下面的表达式:FalseORTrueANDNOTFalseANDTrue计算如下:FalseORTrueAND[NOTFalse]TrueANDTrueFalseORTrueAND[TrueANDTrue]FalseOR[TrueANDTrue][FalseORTrue]True“非”的优先级最高“与”是最高的运算符,具有相同优先级的运算符从右向左计算18\n运算符之间的优先级2-1当公式中含有多种类型的运算符时,必须确立不同类型运算符之间的优先级顺序。一般来说,算术、比较、逻辑运算符的优先级符合下表优先级运算符类型1算术2比较3逻辑19\n运算符之间的优先级2-2考虑下面的示例:2*3+4/2>3AND3<5OR10<9计算如下:[2*3+4/2]>3AND3<5OR10<9[[2*3]+[4/2]]>3AND3<5OR10<9[6+2]>3AND3<5OR10<9[8>3]AND3<5OR10<9TrueANDTrueORFalse[TrueANDTrue]ORFalseTrueORFalseTrue首先计算算术运算符比较运算符,计算总左到右进行最后计算逻辑运算符20\n修改优先级4-1括号()的优先级最高。使用括号()可修改运算符的优先级。用括号括起来的优先级较低的运算符具有最高的优先级,最先执行。在括号嵌套((()))的情况下,最里层的最先执行。包含多个括号的表达式从左向右进行计算。21\n修改优先级4-2考虑下面的示例:5+9*3^2-4>10AND(2+2^4-8/4>6OR(2<6AND10>11))计算如下:5+9*3^2-4>10AND(2+2^4-8/4>6OR(TrueANDFalse))5+9*3^2-4>10AND(2+2^4-8/4>6ORFalse))5+9*3^2-4>10AND(2+16-8/4>6ORFalse))5+9*3^2-4>10AND(2+16-2>6ORFalse))里层括号的优先级大于其他所有的运算符计算外层的括号22\n修改优先级4-35+9*3^2-4>10AND(18-2>6ORFalse))5+9*3^2-4>10AND(18-2>6ORFalse))5+9*3^2-4>10AND(16>6ORFalse))5+9*3^2-4>10AND(TrueORFalse))5+9*3^2-4>10ANDTrue5+9*9-4>10ANDTrue左侧表达式按约定进行23\n修改优先级4-45+81-4>10ANDTrue86-4>10ANDTrue82>10ANDTrueTrueANDTrueTrue24\n总结本课主要讲解了以下主题:赋值运算符算术算运符比较运算符逻辑运算符位运算符转换运算符的优先级25查看更多