C语言运算符与表达式

上传人:飞****9 文档编号:131869906 上传时间:2020-05-10 格式:DOC 页数:8 大小:46.70KB
返回 下载 相关 举报
C语言运算符与表达式_第1页
第1页 / 共8页
C语言运算符与表达式_第2页
第2页 / 共8页
C语言运算符与表达式_第3页
第3页 / 共8页
C语言运算符与表达式_第4页
第4页 / 共8页
C语言运算符与表达式_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《C语言运算符与表达式》由会员分享,可在线阅读,更多相关《C语言运算符与表达式(8页珍藏版)》请在金锄头文库上搜索。

1、一、分类C语言一共有34种运算符,10种运算类型:算术运算符(+、-、*、/、%)、关系运算符(、=、=、!=、=、!=、)单目运算符算术运算符(先乘除后加减)关系运算符逻辑运算符(不包括!)条件运算符赋值运算符逗号运算符三、算术运算符合和算术表达式1.基本的算数运算符(1). +加法运算或正值运算符4+4、+5、(2).- 减法运算或负值运算符6-4、-10、-29(3). *乘法运算注意符号,不是x,而是*(4). /除法运算注意符号,不是,也不是,而是/整数除于整数,还是整数。1/2的值是0,这个并不是二分之一, 不会四舍五入,直接截断取值。 (5)%取余运算取余:即两个整数相除之后的余

2、数注意:%两侧只能是整数,正负性取决于%左侧的数值2.注意:(1).当运算对象是负数时,不同机器的运算结果也可能是不同的。(2).双目运算符两边的数值类型必须一致才能进行运算,所得结果也是相同类型的数值。(3).双目运算符两边的数值类型如果不一致,必须由系统先进行一致性转换。 转换规则:char-short-int-unsigned-long-double-float(4).C语言规定,所有实数的运算都是以双精度方式进行的,若是单精度数值,则需要在尾数后面补零,转换长双精度数才能进行运算。3.算术表达式(1).算术表达式是用算术运算符和括号将运算量(也称操作数)连接起来的、符合C语言语法规则的

3、表达式。其中运算对象包括函数、常量、变量。(2).算术表达式的运算规则:A.在算术表达式中,可以使用多层圆括号,但括号必须配对。运算时从内层括号开始,由内向外依次计算各表达式的值。B.在算术表达式中,对于不同优先级的运算符,可按运算符的优先级由高到低进行运算,若表达式中运算符的优先级相同,则按运算符的结合方向(算术运算符的结合方向是从左到右)进行运算。C.如果一个运算符两侧的操作数类型不同,则先利用自动转换或强制转换,使两者具有相同数据类型,然后再进行运算。四、 关系运算(比较运算)和关系表达式1.关系运算符:C语言提供了6种关系运算符:(大于)、=(大于等于)、=(等于)、!=(不等于)、(

4、小于)、32,先判断4是否大于3,再判断1是否大于23.优先级:关系运算符中(=、!=)的优先级相等,(、=)的优先级相等,且前者的优先级低于后者:2=31,先判断3是否大于1,再判断2是否等于1。4.关系表达式(1).定义:由关系运算符连成的表达式。关系运算符的两边可以是C语言中任意合法的表达式。(2).关系运算符的结果是一个整数值“0或者1”,用非零值表示“真”,用零值表示“假”(3).当关系运算符两边值的类型不一致时,系统将自动转化。5.注意:A.当关系运算符两边值的类型不一致时,如一边是整型,另一边是实型,系统将自动将整型转化为实型数,然后再进行比较。B.若复合语句中有关系运算式和算术

5、运算式时,因为算术运算符的优先级高于关系运算符,所以应该先算出算术表达式的值再去判断关系表达式的值。五、位运算符1.C语言提供了6种运算符(1).&,按位与,规则:若两个相应额二进制位都为1,则该位的结果为1,否则为0.(2).|,按位或,规则:两个相应的二进制位中只要有一个为1,则该位的结果为1,否则为0.(3).,按位异或,规则:若两个二进制位相同,则结果为0,不同则为1(4).,安慰求反,规则:安慰取反,即0变1,1变0(5).,右移,将一个数的二进制位全部右移若干位。不同系统下右移的结果不同,而在mac系统下:正数右移1位,相当于除以2,右移n位,相当于除以2的n次方(移动时,空缺的高

6、位补零,移出的位数舍弃);负数2.说明:(1).位运算符中除“”以外,均为双目运算符,即要求两侧各有一个运算量(2).运算量只能是整型或字符型数据,不能为实型数据(3).位运算符的操作对象是数据所代表的补码3.位常见操作:(1).求a的第n位(0位起)是1还是0 解:让a&(1n)=1,则第n位是1 让a&(1n)=0,则第n位是0(2).通过位运算,将第n位置成1 解:通过运算a|=(1n),即可得(3).将a的第三位置成0 解:通过运算a&=(1n),即可得(4).将a的第n位取反 解:通过运算a=1.若想判断a的值是否在(3, 5)范围内,千万不能写成3a5,因为关系运算符的结合方向为“

7、从左往右”。 比如a为2,它会先算3a,也就是32,条件不成立,结果为0。再与5比较,即05,条件成立,结果为1。因此 3a3) & (a.C语言规定:任何非0值都为“真”,只有0才为“假”。因此逻辑与也适用于数值。比如 5 & 4的结果是1,为“真”;-6 & 0的结果是0,为“假”2.|逻辑或(1).使用格式:条件A | 条件B;(2). 运算结果:当条件A或条件B只要有一个成立时(也包括条件A和条件B都成立),结果就为1,也就是“真”;只有当条件A和条件B都不成立时,结果才为0,也就是“假”。(3).运算过程:总是先判断条件A是否成立如果条件A成立,就不会再去判断条件B是否成立:因为条件

8、A已经成立了,不管条件B如何,“条件A | 条件B”的结果肯定是1,也就是“真”(逻辑或的“短路运算”)如果条件A不成立,接着再判断条件B是否成立:如果条件B成立,“条件A | 条件B”的结果就为1,即“真”,如果条件B不成立,结果就为0,即“假”例:逻辑或的结合方向是“自左至右”。比如表达式 (a5)若a的值是4:先判断a5,也不成立。因此结果为0若a的值是2:先判断a5)若a的值是6:先判断a5,成立,再取反之后的结果为0若a的值是2:先判断a3,不成立,再取反之后的结果为1因此,如果a的值大于5,结果就为0;否则,结果就为1(3). 注意:1.可以多次连续使用逻辑非运算符:!(42)结果

9、为0,是“假”,!(42)结果为1,是“真”,!(42)结果为0,是“假”2.C语言规定:任何非0值都为“真”,只有0才为“假”。因此,对非0值进行逻辑非!运算的结果都是0,对0值进行逻辑非!运算的结果为1。!5、!6.7、!-9的结果都为0,!0的结果为14.结合性:自左向右5.优先级逻辑运算符的优先级顺序为: 小括号() 负号 - ! 算术运算符 关系运算符 & |例1:表达式!(35) | (24) & (65)、(24)、(61),结果为1,式子变为1 | 1 & 0,再计算1 & 0,式子变为1 | 0,最后的结果为1例2:表达式3+23 等价于 (3+2) 3),结果为1例3:表达

10、式43 & !-52 等价于 (43) & (!(-5) 2) ,结果为0七、条件运算符1.条件运算符是一个三目运算符。2.格式:(条件判断)?操作1:操作23.作用:如果条件表达式为真,则执行操作1,条件表达式为假,则执行操作24.优先级:条件运算符高于赋值运算符,但低于逻辑运算符、关系运算符和算术运算符例:int a = 5?10:2;获得a、b中的最大数获得a、b、c中的最大数八、指针运算符1.&取地址运算符,求得某个变量地址2.*指针运算符,求得所指地址的空间里的值九、赋值运算符和赋值表达式1.C语言中,“=”称作赋值运算符,作用是将一个数值赋给一个变量或将一个变量的值赋给另一个变量,

11、由赋值运算符组成的表达式称为赋值表达式。2.简单赋值(1).一般形式:变量名=表达式(2).注意:1.在程序中可以多次给一个变量赋值,每赋一次值,与该变量相应的存储单元的数据就被更新一次,内存中当前的数据就是最后一次所赋值的那个数据。即,最左边变量所得到的新值是整个赋值表达式的值。2.赋值运算符的优先级别高于逗号运算符。3.注意赋值运算符“=”和等于运算符“=”的差别4.赋值运算符的左侧只能是变量,而不能使常量或表达式。右侧可以是表达式,包括赋值运算表达式。“a=b=1+1”是对的,而“a=1+1=b”是错的(原因:由于赋值运算表达式的结合方式是从右到左,其第一个赋值表达式的左侧是常数,所以错误)3.复合赋值(1).在赋值运算符之前加上其他运算符可以构成复合赋值运算符。其中与算术运算有关的复合运算符有+=、-=、*=、/=、和%=等。(2).注意:1.两个符号之间不可以有空格2.复合赋值运算符的优先级与赋值运算符的相同。表达式n+=1等价于n=n+1,作用是去变量n中的值增1再赋值给变量n,其

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

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号