《《移动通信软件编程基础-C语言》第3章运算符.ppt》由会员分享,可在线阅读,更多相关《《移动通信软件编程基础-C语言》第3章运算符.ppt(47页珍藏版)》请在三一办公上搜索。
1、移动通信软件编程基础 C语言,知识回顾,3,运算符,第,章,本章目标,理解表达式,掌握赋值运算符和赋值表达式,掌握关系运算符和关系表达式,掌握简单条件语句的使用,掌握逻辑运算符和逻辑表达式,了解位运算符、sizeof运算符,理解运算符的优先级,表达式的组成,运算符,操作数,表达式,表达式是运算符和操作数构成的式子。操作数包括常量、变量、函数等。运算符主要包括算术运算符、赋值运算符、关系运算符、逻辑运算符,位运算符,赋值运算符,C语言中,赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。由它构成赋值表达式:,变量名=表达式,例如:c=2+5x=10area=length*high,
2、赋值运算注意事项,赋值运算符左边必须是变量,右边可以是常量,变量,函数等组成的表达式。当赋值运算两边数据类型不同时,系统将自动进行类型转换。转换的原则是:先将赋值运算符右边表达式的类型转换成左边变量的类型,然后再进行赋值。,赋值运算符的右结合性,x=y=z=100,x=(y=(z=100),(y=(z=100),自右向左,复合赋值运算符的用法,在赋值运算符“=”的前面加上其他(、%、&、|、其中之一)运算符可构成复合赋值运算符。,变量名?=表达式,复合赋值运算符的用法,#include void main()float Price=2150.75;printf(电脑的造价=%fn,Price)
3、;Price+=849.25;printf(电脑的卖价=%fn,Price);,Price=Price+849.25,电脑的买价=2150.750000,电脑的卖价=3000.000000,C语言中用“关系运算符”来进行“比较运算”。即将关系运算符左右两边的值进行比较,如果符合指定的条件,则结果为“真”,如果不满足条件则结果为“假”。,操作数1,操作数2,关系运算符,10,5,(20*5),25,100,=,100,20,=,15,(45-20),=,(100-75),c,!=,c,结果,真,假,真,假,真,假,1,0,1,0,1,0,关系运算符,关系运算符的优先级,C语言一共提供6种关系运算
4、符:=:优先级别相同(高)!=:优先级别相同(低)(1)上面前4种关系运算符级别高于后2种。(2)关系运算符的优先级低于算数运算符。(3)关系运算符的优先级高于赋值运算符。算术运算符(高)关系运算符赋值运算符(低),条件结构 if语句,条件结构就是根据不同条件进行判断,然后根据判断的结果(真或假)执行不同的操作。C语言中,if语句可以实现这种操作。,简单if语句的一般形式:,if(表达式)语句;,如果是多条语句用括起来,If示例,#include void main()int iNum;printf(请输入分数:);scanf(%d,过程演示,条件结构 if-else语句,if-else语句的
5、一般形式:,If(表达式)else,Ifelse示例,#include void main()int iNum;printf(请输入分数:);scanf(%d,过程演示,逻辑运算符,逻辑运算符用于连接一个或多个关系表达式或逻辑量,判断条件是否成立。用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。,逻辑运算符的类型:,&运算符的功能,表达式1,所有成绩及格,总成绩排名在前20%,无奖学金,无奖学金,无奖学金,获奖学金,NO,表达式2,NO,YES,NO,NO,YES,YES,YES,&运算符示例,#include void main()int iNum;printf(请输入分数:)
6、;scanf(%d,过程演示,|运算符的功能,不可到达,可到达,可到达,可到达,NO,NO,YES,NO,NO,YES,YES,YES,|运算符示例,#include void main()float c1,c2;printf(“请输入三种电脑的价格:);scanf(%f%f,过程演示,!运算符示例,#include void main()int iNum;printf(请输入成绩:);scanf(%d,请输入成绩:,50,分数NOT 60,不及格,及格,YES,NO,成绩不及格!,逻辑运算符的优先级别,!(逻辑非)&(逻辑与)|(逻辑或),即“!”为三者最高!(逻辑非)(高)算术运算符关系运
7、算符&和|赋值运算符(低),逻辑运算符的总结,算术运算符 一元运算符,一元运算符,+,-,自增运算符+和 自减运算符-都属于一元运算符 运算符前置:运算符放在变量前面,例:+num 运算符后置:运算符放在变量后面,例:num+num和 num+都等价于num=num+1,但是当在混合运算时,又有不同运算符后置num+:是先使用num的值,然后进行num=num+1 运算符前置+num:先进行num=num+1,再使用num的值,+num,num+,-num,num-,自增自减运算的操作数不可以为常量,算术运算符 一元运算符,位运算,前面介绍的各种运算都是以字节作为最基本位进行的。但在很多系统程
8、序中常要求在位(bit)一级进行运算或处理。语言提供了位运算的功能,这使得语言也能像汇编语言一样用来编写系统程序。位运算符语言提供了六种位运算符(位运算的操作数为整型)&按位与|按位或 按位异或 按位取反 位右移,位运算按位与运算符(&),参加按位与运算需要有两个数据,是对其二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。,0&0=0 0&1=0 1&0=0 1&1=1,0 0 0 0 0 0 0 1,0 0 0 0 1 0 0 1,(&),1,0,0,0,0,0,0,0,位运算按位或运算符(|),参加按位或运算需要有两个数据,也是对其二进制位进行“或”运算
9、。两个相应的二进制位中只要有一个为1,该位的结果值为1。,0|0=0 0|1=1 1|0=1 1|1=1,0 0 0 0 1 1 1 1,0 0 1 1 1 1 0 0,(|),1,1,1,1,1,1,0,0,位运算按位异或运算符(),参加异或运算需要有两个数据,也是对其二进制位进行“异或”运算。两个相应的二进制位相同,该位的结果值为0,如不同,则该位的结果值为1。,0 0=0 0 1=1 1 0=1 1 1=0,0 1 1 1 0 0 0 0,0 0 1 0 1 1 0 0,(),0,0,1,1,1,0,1,0,位运算按位取反运算符(),运算符用来对一个二进制按位取反,即将0变1,1变0。,
10、0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0,(),1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,位运算左移运算符(),用来将一个数的二进制位全部左移若干位。高位溢出,丢弃。右补零。,12 2,a=a number,0 0 0 0 1 1 0 0,0 0,48,位运算右移运算符(),用来将一个数的二进位全部右移若干位。移到右端的低位被舍弃,对于无符号数,高位补零;对于有符号的数,如果原来符号位为0(该数为正),则左边也是移入0,如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。(VC下移入1),15 2,a=a number,0 0
11、 0 0 1 1 1 1,0 0,3,三元运算符,是,否,?,条件表达式,表达式1,表达式2,?,真,假,三元运算符,max=a b?a:b;,a,b,?,真,假,等价于,ab,三元运算符的示例,#include void main()int a,b,c,iMax;printf(请输入三个数:);scanf(%d%d%d,过程演示,三元运算符,是,否,?,条件表达式,表达式1,表达式2,?,真,假,三元运算符,max=a b?a:b;,a,b,?,真,假,等价于,ab,三元运算符的示例,#include void main()int a,b,c,iMax;printf(请输入三个数:);sca
12、nf(%d%d%d,过程演示,运算符总结(1),结合性:单目运算符,条件运算符,赋值运算符为右结合性,其它为左结合性,运算符总结(2),运算符优先级的归纳,从上表中大致可以归纳出各类运算符的优先级:初等运算符()-.单目(一元)运算符算术运算符(先乘除余,后加减)位左移右移关系运算符位运算符(除外)逻辑运算符(!除外)条件运算符赋值运算符逗号运算符说明:不同优先级,先算优先级高的,后算优先级低的例:a*b-c相同优先级,运算顺序由结合方向决定例:a+b c 例:x=y=z=100,高,低,运算符的优先级,0,6,1,2,逻辑运算符的短路机制:int a=0,b=5 a&+b b|a+,判别某一年year是否闰年。符合下面两个条件之一者为闰年:(1)能被4整除,但不能被100整除。(2)被400整除。,综合示例,#include void main()int iYear;printf(n 请输入年份:);scanf(%d,过程演示,总结,1.求出两个数的较大值,并输出。2.用户任意输入两个数,将两个数互换并输出。3.用户输入一个数,判断此数能不能被3整除。4.任意输入一个英文字母,如果是大写字母,转化为小写输出,如果是小写转化为大写输出。,习题,6.x(x=0)任意输入x,求出y值。y=-x(x 0)7.任意输入三位数,(利用/,%)将其倒序输出,例如123,输出321,习题,