文档详情

《移动通信软件编程基础—C语言PPT课件》第3章运算符

枫**
实名认证
店铺
PPT
2.03MB
约37页
文档ID:587661129
《移动通信软件编程基础—C语言PPT课件》第3章运算符_第1页
1/37

移动通信软件编程基础 —— C语言 IC-MSP<2.0>知识回顾变量和数据类型变量和数据类型 C语言中常量和变量及其用法语言中常量和变量及其用法 C语言的基本数据类型语言的基本数据类型 输入输入/ /输出函数输出函数 scanf函数函数printf函数函数算术运算符、如何进行一元二元运算算术运算符、如何进行一元二元运算 类型转换类型转换 自动类型转换自动类型转换 强制类型转换强制类型转换 字符的输入字符的输入/ /输出函数输出函数 getchar函数函数 putchar函数函数 IC-MSP<2.0>3运算符 第章 IC-MSP<2.0>本章目标 理解表达式理解表达式 掌握赋值运算符和赋值表达式掌握赋值运算符和赋值表达式 掌握关系运算符和关系表达式掌握关系运算符和关系表达式 掌握简单条件语句的使用掌握简单条件语句的使用 掌握逻辑运算符和逻辑表达式掌握逻辑运算符和逻辑表达式了解位运算符、了解位运算符、sizeof运算符运算符 理解运算符的优先级理解运算符的优先级 IC-MSP<2.0>表达式的组成 num1 num2num3+*运算符运算符 操作数操作数 表达式表达式表达式是运算符和操作数构成的式子。

表达式是运算符和操作数构成的式子v 操作数包括常量、变量、函数等操作数包括常量、变量、函数等v 运算符包括算术运算符、赋值运算符、关系运算符、运算符包括算术运算符、赋值运算符、关系运算符、 逻辑运算符逻辑运算符 IC-MSP<2.0>赋值运算符 C语言中,赋值符号语言中,赋值符号““= =”就是赋值运算符,它的作就是赋值运算符,它的作用是将一个数据赋给一个变量用是将一个数据赋给一个变量 由它构成赋值表达式:由它构成赋值表达式: 变量名变量名 = 表达式表达式 例如:例如:c = 2 + 5x = 10area = length * high IC-MSP<2.0>赋值运算符的右结合性 x = y = z = 100x = (y = (z = 100))(y = (z = 100))自右向左自右向左 IC-MSP<2.0>复合赋值运算符的用法 在赋值运算符在赋值运算符“=””的前面加上其他的前面加上其他(+、-、(+、-、×、、/、/、%、、 >>、、<< 、、&、、| 、、^其中之一)运其中之一)运算符可构成复合赋值运算符算符可构成复合赋值运算符变量名变量名 ? = 表达式表达式 IC-MSP<2.0>复合赋值运算符的用法#include void main (){ float fComputerPrice = 2150.75; printf("电脑的造价电脑的造价 = %f\n", fComputerPrice); fComputerPrice += 849.25; printf("电脑的卖价电脑的卖价 = %f\n", fComputerPrice);} fComputerPrice = fComputerPrice += 849.25 电脑的买价电脑的买价 = 2150.750000 电脑的卖价电脑的卖价 = 3000.000000 IC-MSP<2.0>v程序中经常会出现比较两个量的大小,根据比较程序中经常会出现比较两个量的大小,根据比较的结果决定下一步做什么。

的结果决定下一步做什么C C语言中用语言中用“关系运算符关系运算符”来进行来进行“比较运算比较运算” 操作数操作数1 1 操作数操作数2 2 关系运算符关系运算符 10 >5(20*5)<25100>=10020<=15(45-20)==(100-75)'c'!='c' 结果结果 真真假假真真假假真真假假101010关系运算符 IC-MSP<2.0>条件结构 —— if语句 v 条件结构就是根据不同条件进行判断,然后根条件结构就是根据不同条件进行判断,然后根据判断的结果执行不同的操作据判断的结果执行不同的操作C语言中,语言中,if语句语句可以实现这种操作可以实现这种操作 v 简单简单if语句的一般形式:语句的一般形式: if ( (表达式表达式) ) <语句语句>表达式表达式 语句语句 真真假假 IC-MSP<2.0>简单if语句示例#include void main(){ int iHostComputer, iDisplay, iKeyboard, iMouse, iPrice; printf("请分别输入主机、显示器、键盘、鼠标的最低价格:请分别输入主机、显示器、键盘、鼠标的最低价格:\n"); scanf("%d %d %d %d",&iHostComputer,&iDisplay, &iKeyboard,&iMouse); iPrice = iHostComputer + iDisplay + iKeyboard + iMouse; if(iPrice >= 2000) printf("\n购买一台电脑价钱超过购买一台电脑价钱超过2000元元\n");} 内存内存 iHostComputeriDisplayiKeyboardiMouseiPrice请分别输入主机、显示器、键盘、鼠标的最低价格:请分别输入主机、显示器、键盘、鼠标的最低价格: 1800 500 40 20 180050040202360购买一台电脑价钱超过购买一台电脑价钱超过2000元元 IC-MSP<2.0>条件结构 —— if-else语句v if-else语句的一般形式:语句的一般形式: If ( (表达式表达式) ) <语句语句1 1>else <语句语句2>真真假假语句语句2 语句语句1表达式表达式 IC-MSP<2.0>If-else语句示例 #include void main(){ int iHostComputer, iDisplay, iKeyboard, iMouse, iPrice; printf("请分别输入主机、显示器、键盘、鼠标的最低价格:请分别输入主机、显示器、键盘、鼠标的最低价格:\n"); scanf("%d %d %d %d",&iHostComputer,&iDisplay, &iKeyboard,&iMouse); iPrice = iHostComputer + iDisplay + iKeyboard + iMouse; if(iPrice >= 2000) printf("\n购买一台电脑价钱超过购买一台电脑价钱超过2000元元\n"); else printf("\n购买一台电脑价钱低于购买一台电脑价钱低于2000元元\n");} IC-MSP<2.0>逻辑运算符 v 逻辑运算符用于连接一个或多个关系表达式或逻辑逻辑运算符用于连接一个或多个关系表达式或逻辑量,判断条件是否成立。

用逻辑运算符将关系表达式量,判断条件是否成立用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式或逻辑量连接起来的式子就是逻辑表达式 v逻辑运算符的类型:逻辑运算符的类型: IC-MSP<2.0>&&运算符的功能 表达式表达式1 1所有成绩及格所有成绩及格 总成绩排名在前总成绩排名在前%20 无奖学金无奖学金 无奖学金无奖学金 无奖学金无奖学金 获奖学金获奖学金 NO表达式表达式2 2NOYESNONOYESYESYES表达式表达式 1 1表达式表达式 2 2结果结果000100010111 IC-MSP<2.0>&&运算符——示例 #include void main(){ int iNum; printf("请输入分数:请输入分数:"); scanf("%d",&iNum); if(iNum >= 80 && iNum <= 100) printf("分数分数 %d 为优秀!为优秀!\n",iNum); else printf("分数分数 %d 不属于优秀!不属于优秀!\n",iNum);} 过程演示过程演示 IC-MSP<2.0>||运算符的功能 不可到达不可到达 可到达可到达 可到达可到达 可到达可到达 NONOYESNONOYESYESYES表达式表达式 1 1表达式表达式 2 2结果结果000101011111 IC-MSP<2.0>||运算符——示例 #include void main(){ float fComputer1, fComputer2, fComputer3; printf("请输入三台电脑的价格:请输入三台电脑的价格:"); scanf("%f %f %f",&fComputer1,&fComputer2,&fComputer3); if(fComputer1 <= 2500 || fComputer2 <= 2500 || fComputer3 <= 2500) printf("电脑价格小于电脑价格小于2500元,学校可以购买电脑元,学校可以购买电脑"); else printf("电脑价格大于电脑价格大于2500元,学校不能购买电脑元,学校不能购买电脑");}过程演示过程演示 IC-MSP<2.0>!运算符的功能 分数分数NOT大于大于60 不及格不及格 及格及格 YESNO表达式表达式结果结果1001 IC-MSP<2.0>!运算符——示例 #include void main(){ int iNum; printf("请输入成绩:请输入成绩:"); scanf("%d",&iNum); if(!(iNum > 60)) printf("\n成绩不及格!成绩不及格!\n"); else printf("成绩及格!成绩及格!");}请输入成绩:请输入成绩: 50分数分数NOT >60不及格不及格及格及格YESNO成绩不及格!成绩不及格! IC-MSP<2.0>逻辑运算符的总结 &&只有当只有当两个两个条条件都为件都为真真时才时才执行操作执行操作只要只要任何任何一个一个条件为条件为真真时就时就执行操作执行操作||对原条件对原条件取取反反,即:,即:如果原条件如果原条件为假时就执为假时就执行操作行操作! IC-MSP<2.0>位运算——按位与运算符(&) 参加按位与运算需要有两个数据,是对其二进制参加按位与运算需要有两个数据,是对其二进制位进行位进行“与与”运算。

如果两个相应的二进制位都运算如果两个相应的二进制位都为为1 1,则该位的结果值为,则该位的结果值为1 1,否则为,否则为0 00&0=0 0&1=0 1&0=0 1&1=1 0 0 0 0 0 0 0 10 0 0 0 1 0 0 1(&)10000000 IC-MSP<2.0>位运算——按位或运算符(|) 参加按位或运算需要有两个数据,也是对其二进参加按位或运算需要有两个数据,也是对其二进制位进行制位进行“或或”运算两个相应的二进制位中只运算两个相应的二进制位中只要有一个为要有一个为1 1,该位的结构值为,该位的结构值为1 10 | 0=0 0 | 1=1 1 | 0=1 1 | 1=10 0 0 0 1 1 1 10 0 1 1 1 1 0 0( | )11111100 IC-MSP<2.0>位运算——按位异或运算符(^) 参加异或运算需要有两个数据,也是对其二进制参加异或运算需要有两个数据,也是对其二进制位进行位进行“或或”运算两个相应的二进制位相同,运算两个相应的二进制位相同,该位的结果值为该位的结果值为0 0,如不同,则该位的结果值为,如不同,则该位的结果值为1 1。

0 ^ 0=0 0 ^ 1=1 1 ^ 0=1 1 ^ 1=00 1 0 1 0 0 0 00 0 0 0 1 1 0 0( ^ )00111010 IC-MSP<2.0>位运算——按位取反运算符(~) ~ 运算符用来对一个二进制按位取反,即将运算符用来对一个二进制按位取反,即将0 0变变1 1,,1 1变变0 00 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0( ~ )1011001111111111 IC-MSP<2.0>位运算——左移运算符(<<) ~ 运算符用来对一个二进制按位取反,即将运算符用来对一个二进制按位取反,即将0 0变变1 1,,1 1变变0 012 << 2a = a << number0 0 0 0 1 1 0 00 048 IC-MSP<2.0>位运算——右移运算符(>>) 用来将一个数得二进位全部右移若干位移到右端的用来将一个数得二进位全部右移若干位移到右端的低位被舍弃,对于无符号数,高位补零;对于有符号低位被舍弃,对于无符号数,高位补零;对于有符号的数,如果原来符号位为的数,如果原来符号位为0 0(该数为正),则左边也(该数为正),则左边也是移入是移入0 0,如果符号外原来为,如果符号外原来为1 1(即负数),则左边移(即负数),则左边移入入0 0还是还是1 1,要取决于所用的计算机系统。

要取决于所用的计算机系统15 >> 2a = a >> number0 0 0 0 1 1 1 10 03 IC-MSP<2.0>sizeof运算符 v sizeof 操作符以字节形式给出了其操作数的存储操作符以字节形式给出了其操作数的存储大小操作数可以是一个表达式或括在括号内的类型大小操作数可以是一个表达式或括在括号内的类型名操作数的存储大小由操作数的类型决定操作数的存储大小由操作数的类型决定 v 使用使用sizeof运算符的一般形式:运算符的一般形式: 用于数据类型:用于数据类型: sizeof ( type ) 用于变量:用于变量: sizeof ( var_name ) sizeof var_name IC-MSP<2.0>sizeof运算符注意:注意:同一段同一段C C程序,程序,使用不同编译使用不同编译器编译,相同器编译,相同数据类型的变数据类型的变量所占空间可量所占空间可能不同,所以能不同,所以求出的求出的sizeof值可能不同值可能不同 IC-MSP<2.0>运算符的优先级优先级优先级运算符运算符含义含义口诀口诀结合方向结合方向1( )圆括号圆括号括号成员排第一括号成员排第一自左至右自左至右2!~++--(类型类型)sizeof逻辑非运算符逻辑非运算符按位取反运算符按位取反运算符自增运算符自增运算符自减运算符自减运算符类型转换运算符类型转换运算符长度运算符长度运算符单目成员列第二单目成员列第二自右至左自右至左3*/%乘法运算符乘法运算符除法运算符除法运算符求余运算符求余运算符乘除余三乘除余三自左至右自左至右4+-加法运算符加法运算符减法运算符减法运算符加减四加减四自左至右自左至右 IC-MSP<2.0>运算符的优先级优先级优先级运算符运算符含义含义口诀口诀结合方向结合方向5>><<左移运算符左移运算符右移运算符右移运算符移位五移位五自左至右自左至右6< <= > >=关系运算符关系运算符关系六关系六自左至右自左至右7==!=等于运算符等于运算符不等于运算符不等于运算符等于、不等排第七等于、不等排第七自左至右自左至右8&按位与运算符按位与运算符位与异或和位或,位与异或和位或,“三分天下三分天下”八九十八九十自左至右自左至右9^按位异或运算符按位异或运算符10|按位或运算符按位或运算符11&&逻辑与运算符逻辑与运算符逻辑或跟与,逻辑或跟与,十二和十一十二和十一自左至右自左至右12||逻辑或运算符逻辑或运算符13= += -=*= /= %=赋值运算符赋值运算符赋值排在第十三赋值排在第十三自右至左自右至左 IC-MSP<2.0>运算符的优先级int a = 1, b = 2, c = 3, d = 4; 表达式表达式等价表达式等价表达式值值a * b / d(a *b) / da *d % c + 5((a * b) % c) + 5++a * b – c-- ((++a) * b) – (c--)--b*++d/2((--b) * (++d)) / 20612 IC-MSP<2.0>判别某一年判别某一年year是否闰年。

符合下面两个条件是否闰年符合下面两个条件之一者为闰年:之一者为闰年:((1 1)能被)能被4整除,但不能被整除,但不能被100整除2 2)能被)能被4整除,又能被整除,又能被400整除综合示例#include void main(){ int iYear; printf("\n 请输入年份:请输入年份:"); scanf("%d",&iYear); if((iYear % 4 == 0 && iYear % 100 != 0) || (iYear % 400 == 0)) printf("\n %d 年是闰年年是闰年 \n ", iYear); else printf("\n %d 年不是闰年年不是闰年 \n ", iYear);}过程演示过程演示 IC-MSP<2.0>总结运算符运算符表达式是运算符和操作数构成的式子表达式是运算符和操作数构成的式子 赋值运算符和复合赋值运算符的用法赋值运算符和复合赋值运算符的用法 关系运算符进行操作数之间的比较,计算结果是逻辑值关系运算符进行操作数之间的比较,计算结果是逻辑值 条件结构的用途,根据逻辑值判断执行那些语句条件结构的用途,根据逻辑值判断执行那些语句 逻辑运算符用于判断逻辑量或表达式是否成立,计算结果也是逻辑值逻辑运算符用于判断逻辑量或表达式是否成立,计算结果也是逻辑值 sizeof运算符用于判断某一数据在内存中占有的字节数运算符用于判断某一数据在内存中占有的字节数 依据运算符的优先级和结合性对表达式进行运算依据运算符的优先级和结合性对表达式进行运算 if语句语句 if-else语句语句 < <= > >=== !== IC-MSP<2.0>习题1、写出下面各逻辑表达式的值,设、写出下面各逻辑表达式的值,设a=3,b=4,c=5 1) a+b>c&&b==c 2) a||b+c&&b-c 3) !(a>b)&&!c||1 4) !(x=a)&&(y=b)&&0 5)!(a+b)+c-1&&b+c/22、、若若x、、i、、j、、k都是都是int型型变量,量,则计算下面表达式后,算下面表达式后,x的的值为 x=(i=4,j=16,k=32)A) 4B) 16C) 32D) 523、、输入一个字符,判断是否是大写,是大写改入一个字符,判断是否是大写,是大写改为小写小写输出。

出4、用条件语句编写程序:输入、用条件语句编写程序:输入3个整数,输出其最大值个整数,输出其最大值 IC-MSP<2.0>1、编写程序,输入三个整数,要求按有大到小的顺序排列输出、编写程序,输入三个整数,要求按有大到小的顺序排列输出2、从键盘输入四个整数,求出、从键盘输入四个整数,求出4个数中偶数的和个数中偶数的和3、一个、一个5位数,判断它是不是回文,即个位与万位相同,十位与千位相同 位数,判断它是不是回文,即个位与万位相同,十位与千位相同  例:例:12321 是回文是回文作业 。

下载提示
相似文档
正为您匹配相似的精品文档