第04章运算符restudy

上传人:M****1 文档编号:591330407 上传时间:2024-09-17 格式:PPT 页数:36 大小:203KB
返回 下载 相关 举报
第04章运算符restudy_第1页
第1页 / 共36页
第04章运算符restudy_第2页
第2页 / 共36页
第04章运算符restudy_第3页
第3页 / 共36页
第04章运算符restudy_第4页
第4页 / 共36页
第04章运算符restudy_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《第04章运算符restudy》由会员分享,可在线阅读,更多相关《第04章运算符restudy(36页珍藏版)》请在金锄头文库上搜索。

1、第第4章章 运算符及表达式运算符及表达式4.1 C的运算符与表达式的运算符与表达式4.2 算术运算符和算术表达式算术运算符和算术表达式4.3 强制类型转换运算符强制类型转换运算符 4.4 增量运算符与增量表达式增量运算符与增量表达式4.5 赋值运算符和赋值表达式赋值运算符和赋值表达式4.6 逗号运算符和逗号表达式逗号运算符和逗号表达式4.7 关系运算符和关系表达式关系运算符和关系表达式4.8 逻辑逻辑运算符和运算符和逻辑逻辑表达式表达式4.9 条件运算符和条件表达式条件运算符和条件表达式4.10 位运算符和位位运算符和位运算运算4.11 其他运算符其他运算符9/17/20241 4.1.1 运

2、算符运算符n运算符就是运算符就是参与运算参与运算的符号,的符号,C的运算符十分丰富,共有的运算符十分丰富,共有34种运算符。如,种运算符。如,n算术运算符算术运算符: +、*、/、%(求余数)(求余数)n赋值运算符赋值运算符: n关系运算符关系运算符: 、(等于)、(等于)、!(不等于)(不等于)n逻辑运算符逻辑运算符: !(逻辑非逻辑非)、&(逻辑与逻辑与)、| (逻辑或逻辑或) n双目双目运算符运算符: 两边各有一个操作数,如两边各有一个操作数,如c=a+b中的中的“=”和和“+”。n单目单目运算符运算符: 只作用于一个操作数,如只作用于一个操作数,如a+中的中的“+” 。n三目运算符三目

3、运算符: 运算符在使用时,需要有三个操作数,比如运算符在使用时,需要有三个操作数,比如 (ab)?a:b 中的条件运算符中的条件运算符“? :” 。 4.1 C的运算符及表达式的运算符及表达式9/17/202424.1.2 表达式表达式1、表达式是由、表达式是由运算符、运算对象运算符、运算对象(操作数)和(操作数)和标点符号标点符号组成组成的,符合的,符合C语法规定的式子。说明一个计算过程。语法规定的式子。说明一个计算过程。2、表表达达式式是是根根据据某某些些约约定定、结结合合性性、及及优优先先级级规规则则进进行行计计算算的。的。C语言规定了运算符的优先级和结合性。语言规定了运算符的优先级和结

4、合性。n优优先先级级:出出现现不不同同的的运运算算符符时时,按按优优先先级级由由高高到到低低的的顺顺序序运运算。算。 例如,例如,a+b*c+fn结合性:是指出现结合性:是指出现同等同等优先级的运算符时的运算顺序。优先级的运算符时的运算顺序。 “左结合性左结合性”和和“右结合性右结合性”。(附录。(附录B) 右结合:单目(!、右结合:单目(!、+)、三目(?:)、赋值算符)、三目(?:)、赋值算符 9/17/20243(1)算术运算符:)算术运算符:+、*、/、%注意注意: 整数除法,小数自动舍去整数除法,小数自动舍去5 / 2值为值为25.0/2值为值为 2.5n% 求余运算符。求余运算符。

5、只能用于整型数据只能用于整型数据,是取整数相除是取整数相除的余数。的余数。n如如 5%3 值为值为2 , 10%3 值为值为 14.2 算术运算符和算术表达式算术运算符和算术表达式9/17/20244(2)算术运算符的优先级和结合性。)算术运算符的优先级和结合性。优先级优先级:-(取负)(取负) *、 /、% +、- 即先乘除,后加减。即先乘除,后加减。结合性结合性:左结合性左结合性例:例: a+b-c 先处理先处理a+b,再进行,再进行 -c的运算。的运算。(3)算术表达式:用算术运算符和括号将运算对象)算术表达式:用算术运算符和括号将运算对象连接起来连接起来,符合符合C语法规定的式子。语法

6、规定的式子。 例如,例如,(a+b)*c-d/f9/17/20245n(类型名类型名)(表达式表达式)n作用:将一个表达式的值,强制转换成所需要的数据类型作用:将一个表达式的值,强制转换成所需要的数据类型n例如,例如,(int)(x);/* 将将x的值强制转换成整型数据类型的值强制转换成整型数据类型 */ (float)(x+y);/* 将将x+y的值强制转换成的值强制转换成float型型 */n优先级优先级:为为2级,高于级,高于 *、 /、 % 。n结合性:右结合性:右左左n使用强制类型转换运算符时要注意:强制转换的数据类型名使用强制类型转换运算符时要注意:强制转换的数据类型名和表达式一定

7、要用圆括号括起来,否则,会出现预想不到的和表达式一定要用圆括号括起来,否则,会出现预想不到的结果。结果。(float)(x+y)与与(float)x+y 不同不同4.3 强制类型转换运算符强制类型转换运算符9/17/20246n注意:注意:强制类型转换只是得到所需类型的值而原强制类型转换只是得到所需类型的值而原变量的类型不变。变量的类型不变。n例例nmain( ) nfloat x; int i; n x=3.6; i= (int) x; n prinf(“x=%f, i=%d”, x , i );nn结果:结果:x=3.600000 , i=3 ( x的类型没变的类型没变)9/17/2024

8、7【例例4.1】分析下面程序的运行结果。分析下面程序的运行结果。n#includenmain( )n float a=3.6,b=2.6;n int m,k;n m=(int)(a+b);n k=(int)a+b;n printf (“%d, %d n”, m, k);n6,59/17/202481 增量运算符增量运算符n增量运算符有:增量运算符有:+ +(自增运算符)、(自减运算符)(自增运算符)、(自减运算符)n它们的作用是使它们的作用是使变量的值增变量的值增1或减或减1。 例如,执行下面两条语句例如,执行下面两条语句int a=6,b;b=+a;n增量运算符有两种使用形式:增量运算符有两

9、种使用形式:第一种为前增量运算。第一种为前增量运算。例如,例如,+x;或;或- -x;表示表示先先进行自增进行自增1或自减或自减1运算,然后使用变量运算,然后使用变量x的值。的值。第二种为后增量运算。第二种为后增量运算。例如,例如,x + ;x - - ;表示先使用变量表示先使用变量x的值,然后进行自增的值,然后进行自增1或自减或自减1运算。运算。4.4 增量运算符与增量表达式增量运算符与增量表达式9/17/20249+k , - -k :在使用:在使用k之之前前使使k值增值增1,减减1。k+ , k- - : 在使用在使用k之之后后,使,使k值增值增1,减减1。例:设例:设 i=3; j =

10、 +i; 先使先使i 的值为的值为4,然后,然后 j的值为的值为4。 j = i+; j的值为的值为3,然后,然后 i 的值为的值为4。 printf(“%d”, +i); /*结果显示:结果显示:4 */ printf(“%d”,i+); /*结果显示:结果显示:3 */9/17/2024102 增量运算符的优先级和结合性增量运算符的优先级和结合性n优先级优先级:2级。级。例如,表达式例如,表达式a * +b的运算顺序是:的运算顺序是:先对先对b做自增做自增+运算,后进行运算,后进行a与与b的的*运算。运算。n结合性结合性:右结合性:右结合性(右右左左),即操作数按自右向左,即操作数按自右向

11、左的运算顺序。的运算顺序。 例例: j=-i+;/* j=-(i+) */n若若 i 的原值为的原值为3,则以上表达式为先用则以上表达式为先用i值值,得得j= -3,然后然后 i+1得得 i =4。9/17/2024111 赋值运算符赋值运算符: “=”。n作用作用: 将一个数据(或者一个表达式的值、一个变量的值)将一个数据(或者一个表达式的值、一个变量的值)赋值给一个变量。赋值给一个变量。例如,例如, a=5; a=b+c*4;n在赋值运算时,当左边变量的数据类型与右边数值的类型不在赋值运算时,当左边变量的数据类型与右边数值的类型不一致时,以赋值运算符一致时,以赋值运算符“=”左左边变量的数

12、据类型为准,边变量的数据类型为准,将将右边表达式的值转换为左边变量的数据类型进行赋值。右边表达式的值转换为左边变量的数据类型进行赋值。4.5 赋值运算符与赋值表达式赋值运算符与赋值表达式9/17/2024122 复合赋值运算符复合赋值运算符在在“=”之前加上其他运算符而构成。共有以下之前加上其他运算符而构成。共有以下10种:种:+=,- =,* * =,=,%=,=,&=,=,=例如,例如,a+=3;等同于等同于 a=a+3;x=y+2; 等同于等同于 x=x(y+2);3 赋值表达式赋值表达式 例如,例如,a=6+5 * b; b * =5;x=y=6;9/17/2024134 赋值运算符的

13、优先级和结合性赋值运算符的优先级和结合性n仅高于仅高于逗号逗号运算符。运算符。n结合性是:结合性是:右结合性右结合性,例如,例如,x+=x*=x=5;n注意以下几点:注意以下几点: 在赋值运算符左边的量在赋值运算符左边的量(通常称为左值通常称为左值)必须是变量,不能必须是变量,不能是常量或表达式。是常量或表达式。例如,例如,int a,b;ab;b8;是正确的赋值表达式;是正确的赋值表达式;6a;ab14;都是错误的。;都是错误的。 赋值运算可以连续进行。赋值运算可以连续进行。例如,例如,abc0; 赋值表达式赋值表达式的值的值等于右边表达式的值,而结果值的类型由等于右边表达式的值,而结果值的

14、类型由左边左边变量变量的类型决定。的类型决定。9/17/202414例例4.34.3:分析以下程序的运行结果。分析以下程序的运行结果。 main( ) int x2,y,z; x * 45; printf(1)xdn,x); x * yz4; printf(2)xdn,x); xy1; z(x+)-1; printf(3)xd,zdn,x,z); zx+ * +y; printf(4)xd,yd,zdn,x,y,z); 输出结果是:输出结果是: (1)x18 (2)x72 (3)x2,z0 (4)x3,y2,z49/17/2024151 逗号运算符与逗号表达式逗号运算符与逗号表达式n逗号运算符

15、为逗号运算符为“,”。n 表达式表达式1,表达式,表达式2n作用作用: 从左到右从左到右,顺序计算表达式顺序计算表达式1、表达式、表达式2的值的值n表达式的值表达式的值:表达式表达式2的值的值.n例如,例如,int a=5,b; b=a+5, a+8;变量变量b的值是什么的值是什么?整个表达式的值是什么整个表达式的值是什么?4.6 逗号运算符与逗号表达式逗号运算符与逗号表达式 b为为10,整个表达式的值是,整个表达式的值是139/17/202416n逗号表达式的扩展形式是:逗号表达式的扩展形式是:表达式表达式1,表达式,表达式2,表达式,表达式nn它的执行过程它的执行过程 n从左到右从左到右,

16、顺序计算表达式的值顺序计算表达式的值,以以表达式表达式n的值作的值作为整个表达式的值为整个表达式的值.n2 逗号运算符的优先级和结合性逗号运算符的优先级和结合性n优先级是:优先级别最低的优先级是:优先级别最低的(15级) 。n结合性是:左结合性结合性是:左结合性9/17/202417例:例:a=5*3 , a*4 其中其中 a=15 , 逗号表达式的值是逗号表达式的值是60。一个逗号表达式可以和另一个表达式组成一个一个逗号表达式可以和另一个表达式组成一个新的表达式。新的表达式。如:如:( a=5*3 , a*4),a+5 表达式值为表达式值为20。 9/17/2024181 关系运算符关系运算

17、符nC语言的关系运算符有语言的关系运算符有6个:个:、(等于)、(等于)、!(不等于)(不等于)n关系运算符的作用是关系运算符的作用是比较两个操作数间的大小关系比较两个操作数间的大小关系。例如,例如,ab是比较是比较a是否大于是否大于b。x= =y是比较是比较x是否等于是否等于y。4.7 关系运算符与关系表达式关系运算符与关系表达式9/17/2024192 关系运算符的优先级和结合性关系运算符的优先级和结合性n, , !n算术运算符算术运算符 关系运算符关系运算符 赋值运算符赋值运算符例如,例如,abcd;等效于等效于 (ab)(cd);a= =b=c; 等效于等效于 a= =(b=c););

18、a=b= c;等效于等效于 a =(b= c););n关系运算符的结合性是:左结合性。关系运算符的结合性是:左结合性。例如,例如, abc,等效于(等效于(ab)c;9/17/2024203 关系表达式关系表达式例如,例如,5= =3的值是的值是0。53的值是的值是1。9/17/202421【例例4.4】分析下面程序的运算结果。分析下面程序的运算结果。n#includenmain( )n int a, b, c;n a=b=c=10;n a=b= =c;n printf( a=%d, b=%d, c=%dn, a, b, c);n a= (b= c+*2);n printf( a=%d, b=

19、%d, c=%dn, a, b, c);n a=bc=100;n printf( a=%d, b=%d, c=%dn, a, b, c);n输出结果是:输出结果是:a1,b10,c10a20,b20,c11a0,b20,c119/17/2024221.1.逻辑运算符逻辑运算符:C语言中逻辑运算符有语言中逻辑运算符有3个,它们是:个,它们是:! 逻辑非逻辑非& 逻辑与逻辑与| | 逻辑或逻辑或其中,其中,“!”是单目运算符,而是单目运算符,而&和和 | | 是双目运算符。是双目运算符。 表表2 2 逻辑运算的真值表逻辑运算的真值表xy!xx&yx | | y1101110001011010010

20、04.8 4.8 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式9/17/2024232.2.逻辑运算符的优先级逻辑运算符的优先级: :!(非)!(非)&(与)(与) | |(或)(或)与其他运算符的优先级次序与其他运算符的优先级次序: :“!” 算算术术运运算算符符关关系系运运算算符符“&” 和和 “|” 赋赋值运算符值运算符例如,例如, a b & xy;等效于等效于(a b)&(xy) a= =b | | x= =y;等效于(等效于(a= =b )| | (x= =y) ! a | | b c;等效于(等效于(! a)| |(b c)逻逻辑辑运运算算符符的的结结合合性性:运运算算符符逻逻辑

21、辑非非“!”的的结结合合性性是是右右结结合合性,而逻辑与性,而逻辑与“&”和逻辑或和逻辑或“|”的结合性是的结合性是左左结合性。结合性。9/17/2024243 逻辑表达式逻辑表达式n例如,例如,53 & 8b)&(n=cd)的的值为值为_n m=_ n=_001因为因为ab的值是的值是0,所以,所以m=0, (m=ab)值为值为0,此时已确定整个表达式的值为此时已确定整个表达式的值为0,所以,所以n=cd不不被执行,因此被执行,因此n的值不变,的值不变,n=1.例:判断字符变量例:判断字符变量c中的中的ASCII值是否英文字母,值是否英文字母,判别式正确的是判别式正确的是_ (a). Z=

22、c = A (b). c=A| | c=A&cy)?)?x:y;min(xb)?)?a:b+1;等效于;等效于(ab)?a: (b+1);n结合性是结合性是:右结合性,即自右向左的运算顺序。:右结合性,即自右向左的运算顺序。例如,例如, max(xy)?)?x:(yz)?y:z相当于相当于max(xy)?)?x: ( (yz)?y:z ) 9/17/2024301 位运算符和位运算位运算符和位运算n在在C语言中,位运算符有以下语言中,位运算符有以下6个:个:“&”(按位与运算)(按位与运算)“ ”(按位或运算)(按位或运算)“”(按位取反运算)(按位取反运算)“”(按位异或运算)(按位异或运算

23、)“”(右移(右移1位运算)位运算)n其中,其中,“” 是单目运算符,其余是双目运算符。是单目运算符,其余是双目运算符。n位运算符的含义是:按操作数的位运算符的含义是:按操作数的二进制位进行运算二进制位进行运算。 相邻位之间不发生联系,即没有相邻位之间不发生联系,即没有“进位进位”和和“借位借位”的的问题问题4.10 位运算符和位运算位运算符和位运算9/17/202431 按位与(按位与()运算)运算参与运算的两个数据,按二进制进行参与运算的两个数据,按二进制进行“与与”运算。运算。即,即,1&1=11&1=1;1&0=01&0=0;0&1=00&1=0;0&0=00&0=0;按位或(按位或(

24、| |)运算)运算参与运算的两个数据,按二进制进行参与运算的两个数据,按二进制进行“或或”运算。运算。即,即, 0|0=00|0=0;1|0=11|0=1;0|1=10|1=1;1|1=11|1=1;按位异或(按位异或()运算)运算参与运算的两个数据,按二进制进行参与运算的两个数据,按二进制进行“异或异或 ” ”运算。运算。即,即, 00=000=0;11=011=0; 10=110=1;01=101=1;按位取反()运算按位取反()运算用来对一个二进制数按位取反。即,将用来对一个二进制数按位取反。即,将0 0变变1 1,1 1变变0 0。9/17/202432左移位(左移位()运算)运算将一

25、个数的各二进制位全部左移若干位。将一个数的各二进制位全部左移若干位。例如,例如,a11( =00001011 )则,则,a)运算)运算将一个数的各二进制位全部右移若干位。将一个数的各二进制位全部右移若干位。例如,例如,a00001011,那么,那么,a3的结果是的结果是00000001,即即:把把a的的各各二二进进位位全全都都向向右右移移3位位,右右边边溢溢出出的的位位被被丢丢弃弃,而左边空出的位而左边空出的位(在本例情况下在本例情况下)补补0。n在右移时,要注意符号位问题。在右移时,要注意符号位问题。 (负数补负数补1)9/17/2024331求字节数运算符求字节数运算符sizeof 例例:

26、 sizeof(int) 的值为的值为2 float a; printf(“ %d”, sizeof(a) ) ; 结果输出结果输出 42负号运算符负号运算符 “” int a,b=12; a=-b; 结果结果a的值为的值为-124.11 其他运算符其他运算符9/17/2024343地址运算符地址运算符 “&” 4指针运算符指针运算符 “ * * ” 5圆括号运算符圆括号运算符 “( )” 6下标运算符下标运算符 “ ” 7指向结构体成员运算符指向结构体成员运算符 “” 8结构体成员运算符结构体成员运算符 “” n以后在相关章节中详细介绍以上运算符的用法以后在相关章节中详细介绍以上运算符的用法.9/17/202435n作业(p69)n4.14.69/17/202436

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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