《操作系统课件-2.ppt》由会员分享,可在线阅读,更多相关《操作系统课件-2.ppt(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章 运算符和表达式&掌握:算术、关系、逻辑等常见运算符掌握:算术、关系、逻辑等常见运算符&掌握:各种运算符的优先级掌握:各种运算符的优先级&掌握:各种表达式的组成及运算过程掌握:各种表达式的组成及运算过程&重点:运算符的优先级及表达式分析计算重点:运算符的优先级及表达式分析计算&难点:自增、自减运算符难点:自增、自减运算符1C程序设计实例教程 山东科技大学机电学院3.1 算术运算符和算术表达式&算术运算符算术运算符 类型含义示例优先级结合方向+加5+84从左到右-减或取负6-7或-44为减号时从左到右,取负时从右到左*乘12*43从左到右/除45/73从左到右%取余54%83从左到右+自增
2、i+或+i2从右到左-自减j或-j2从右到左2C程序设计实例教程 山东科技大学机电学院&算术表达式算术表达式 定义定义:算术表达式是由算术运算符和括号将运算对象算术表达式是由算术运算符和括号将运算对象连接起来的式子连接起来的式子,其中运算对象可以是常量、变量、其中运算对象可以是常量、变量、函数、数组元素等内容。函数、数组元素等内容。形式:形式:表达式表达式1 算术运算符算术运算符 表达式表达式2 【例例3.1】若若a=5,b=3,c=2,x=1.5,则算术表达式,则算术表达式a*x*x+b*x+c的结果是多少?的结果是多少?3C程序设计实例教程 山东科技大学机电学院注意:注意:(1)当运算符)
3、当运算符“/”两侧的操作数为整型时,计算结果为两侧的操作数为整型时,计算结果为整型,如整型,如19/2=9。(2)运算符)运算符“%”两侧的操作数必须是基本整型、短整型两侧的操作数必须是基本整型、短整型或长整型数,而不能是浮点型数字。或长整型数,而不能是浮点型数字。(3)运算符)运算符“+”、“-”只能用于变量,而不能用于常只能用于变量,而不能用于常量或表达式,如:量或表达式,如:i+、-j均是正确的,而均是正确的,而+10、(a+b)+则是错误的。则是错误的。4C程序设计实例教程 山东科技大学机电学院3.2 赋值运算符和赋值表达式&赋值运算符赋值运算符 类型含义示例优先级结合方向=等于a=b
4、+314从右到左+=加等于a+=b14从右到左-=减等于a-=214从右到左*=乘等于a*=314从右到左/=除等于a/=(a+3)14从右到左%=取余等于a%=b14从右到左=右移等于a=114从右到左=左移等于a=214从右到左&=按位与等于a&=b14从右到左=按位异或等于a=b14从右到左|=按位或等于a|=b14从右到左5C程序设计实例教程 山东科技大学机电学院&赋值表达式赋值表达式 定义定义:赋值表达式是由赋值运算符和括号将运算对象连赋值表达式是由赋值运算符和括号将运算对象连接起来的式子,其中运算对象可以是常量、变量、函接起来的式子,其中运算对象可以是常量、变量、函数、数组元素等内
5、容。数、数组元素等内容。形式:形式:变量名称变量名称 赋值运算符赋值运算符 表达式表达式【例例3.1】若若a=5,b=3,c=2,x=1.5,则算术表达式,则算术表达式a*x*x+b*x+c的结果是多少?的结果是多少?6C程序设计实例教程 山东科技大学机电学院举例【例例3.4】已知已知int a=5,b=3,x=10,计算如下表达式的值。,计算如下表达式的值。a=a*8 表达式值为表达式值为40,a=40b%=2 表达式值为表达式值为1,b=1x*=(a+b)表达式值为表达式值为410,x=410a=b=c=5 表达式值为表达式值为5,a,b,c值为值为5a=(b=5)b=5,a=5a=5+(
6、c=6)表达式值为表达式值为11,c=6,a=11a=(b=4)+(c=6)表达式值为表达式值为10,a=10,b=4,c=6a=(b=10)/(c=2)表达式值为表达式值为5,a=5,b=10,c=27C程序设计实例教程 山东科技大学机电学院注意:注意:(1)对于简单赋值运算符和复合赋值运算符,等号左侧的)对于简单赋值运算符和复合赋值运算符,等号左侧的操作数只能为变量,而不能是常量或表达式,如操作数只能为变量,而不能是常量或表达式,如a=5是正是正确的,而确的,而10=3+2以及以及a+b=8都是错误的。都是错误的。(2)赋值运算符具有右结合性,因此)赋值运算符具有右结合性,因此a=b=c=
7、10是正确的,是正确的,等价于等价于a=(b=(c=10)。(3)当等号)当等号“=”两侧的类型不同时,将要进行数值类型两侧的类型不同时,将要进行数值类型的转换的转换 8C程序设计实例教程 山东科技大学机电学院&赋值语句赋值语句 在在赋赋值值表表达达式式的的基基础础上上添添加加“;”就就构构成成了了赋赋值值语语句句。如如x=(a=4)+8;计计算时先计算右侧括号中的内容,然后与算时先计算右侧括号中的内容,然后与8相加,并将结果赋给变量相加,并将结果赋给变量x。【例例3.5】已已知知华华氏氏温温度度与与摄摄氏氏温温度度之之间间的的转转换换公公式式为为C=5/9*(F-32),编编写写程程序序将输
8、入的华氏温度转换为摄氏温度输出将输入的华氏温度转换为摄氏温度输出#include stdio.hvoid main()int f;float c;scanf(%d,&f);/*输入华氏温度输入华氏温度*/c=5/9*(f-32);printf(c=%fn,c);/*输出结果输出结果*/9C程序设计实例教程 山东科技大学机电学院3.3 关系运算符和关系表达式&关系运算符关系运算符 C语言提供了语言提供了6种关系运算符种关系运算符 类型含义示例优先级结合方向小于586从左到右=小于等于a大于ab+16从左到右=大于等于5=8-26从左到右!=不等于a!=37从左到右=是否等于a=57从左到右10C
9、程序设计实例教程 山东科技大学机电学院&关系表达式关系表达式定义定义:关系表达式是由关系运算符和括号将运算对象连接起来的关系表达式是由关系运算符和括号将运算对象连接起来的式子,其中运算对象可以是常量、变量、函数、数组元素等内容。式子,其中运算对象可以是常量、变量、函数、数组元素等内容。一般组成形式一般组成形式:表达式表达式1 关系运算符关系运算符 表达式表达式2 注意注意:关系表达式的结果是关系表达式的结果是1或或0,前者对应于关系成立,后者对应于关系,前者对应于关系成立,后者对应于关系不成立。如:不成立。如:531 关系不成立,表达式的值为关系不成立,表达式的值为0(3+7)!=(2+8)关
10、系不成立,表达式的值为关系不成立,表达式的值为011C程序设计实例教程 山东科技大学机电学院【例例3.6】若有若有int a=3,b=2,c=1,d,f;则则 ab /表达式值表达式值1 (ab)=c /表达式值表达式值1 b+cb /d=1 f=abc /f=0注意:注意:(1)表达式)表达式1和表达式和表达式2还可以是常量、变量的形式,也可以是还可以是常量、变量的形式,也可以是赋值表达式、逻辑表达式、关系表达式等表达式嵌套的形式。赋值表达式、逻辑表达式、关系表达式等表达式嵌套的形式。(2)关系表达式的值为)关系表达式的值为0或或1。12C程序设计实例教程 山东科技大学机电学院3.4 逻辑运
11、算符和逻辑表达式&逻辑运算符逻辑运算符类型含义示例优先级结合方向!取反!a2从右到左&逻辑与(53)&12%711从左到右|逻辑或y/4|(x+3)=512从左到右其中逻辑与运算符其中逻辑与运算符&和逻辑或运算符和逻辑或运算符|均为双目运算符,均为双目运算符,具有左结合性。非运算符具有左结合性。非运算符!为单目运算符,具有右结合性。为单目运算符,具有右结合性。13C程序设计实例教程 山东科技大学机电学院逻辑运算的值为逻辑运算的值为“真真”和和“假假”两种,用两种,用“1”和和“0”来表示。来表示。逻辑运算表逻辑运算表ab!a!ba&ba|b真真假假真真真假假真假真假真真假假真假假真真假假例如由
12、于5和3均为非“0”,因此5&3的值为“真”,即为1。14C程序设计实例教程 山东科技大学机电学院&逻辑表达式逻辑表达式 定义定义:逻辑表达式是由逻辑运算符和括号将运算对象逻辑表达式是由逻辑运算符和括号将运算对象连接起来的式子。连接起来的式子。其中运算对象可以是常量、变量、其中运算对象可以是常量、变量、函数的形式,也可以是关系表达式、算术表达式等表函数的形式,也可以是关系表达式、算术表达式等表达式嵌套的形式,逻辑表达式的结果为达式嵌套的形式,逻辑表达式的结果为1或或0。逻辑表达式的一般形式为逻辑表达式的一般形式为 表达式表达式1 逻辑运算符逻辑运算符 表达式表达式215C程序设计实例教程 山东
13、科技大学机电学院【例例3.7】判断某年的天数。判断某年的天数。分析:分析:判断某年的天数,实际是判断该年是闰年还判断某年的天数,实际是判断该年是闰年还是平年,而闰年的判断条件是:该年能被是平年,而闰年的判断条件是:该年能被4整除,但整除,但不能被不能被100整除,或者能被整除,或者能被400整除。很显然,前面整除。很显然,前面两个条件是并列的关系,用逻辑与运算符连接,而两个条件是并列的关系,用逻辑与运算符连接,而与后者的关系是或的关系,因此可以用逻辑或运算与后者的关系是或的关系,因此可以用逻辑或运算符来连接前后两个表达式。符来连接前后两个表达式。16C程序设计实例教程 山东科技大学机电学院注意
14、:注意:(1)在逻辑运算值时,以)在逻辑运算值时,以“1”代表代表“真真”,“0”代表代表“假假”;但在;但在判断一个量是为判断一个量是为“真真”还是为还是为“假假”时,以时,以“0”代表代表“假假”,以非,以非“0”的数值作为的数值作为“真真”。如。如3&0.5,结果为,结果为1。(2)在逻辑与)在逻辑与&和逻辑和逻辑|运算中,存在一种短路效应。运算中,存在一种短路效应。【例例3.8】以下程序的输出结果是什么?以下程序的输出结果是什么?#include stdio.hvoid main()int i=1,j=2,k=3;float x=200,y=0.85;printf(%d,%dn,i=5
15、&c&(j=8),x+y|i+j+k);17C程序设计实例教程 山东科技大学机电学院3.5 条件运算符和条件表达式&条件运算符条件运算符:C语言提供了语言提供了1种条件运算符种条件运算符 类型含义示例优先级结合方向?:取反ab?a:b13从右到左其中其中 该运算符是三目运算符,具有右结合性。该运算符是三目运算符,具有右结合性。18C程序设计实例教程 山东科技大学机电学院&条件表达式条件表达式 定义:条件表达式是由条件运算符和有关表达式、变定义:条件表达式是由条件运算符和有关表达式、变量或常量等组成的式子。量或常量等组成的式子。条件表达式的一般形式为:条件表达式的一般形式为:表达式表达式1?表达
16、式表达式2:表达式表达式3其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。注意:注意:(1)条件运算符中“?”和“”是一对运算符,不能分开单独使用;(2)条件运算符的结合方向是自右至左。因此ab?a:cd?c:d应理解为ab?a:(cd?c:d)。19C程序设计实例教程 山东科技大学机电学院3.6 逗号运算符和逗号表达式&逗号运算符逗号运算符:C语言提供了语言提供了1种逗号运算符种逗号运算符 类型含义示例优先级结合方向,逗号ab,c!=0,x15从左到右20C程序设计实例教程 山东科技大学机电学院&逗号表达式逗号表达式定义:逗
17、号表达式是由逗号运算符和有关变量、常定义:逗号表达式是由逗号运算符和有关变量、常量、表达式等组成的式子。量、表达式等组成的式子。逗号表达式的一般形式为:逗号表达式的一般形式为:表达式表达式1,表达式,表达式2,表达式表达式3求解的顺序:求解的顺序:是自左向右进行,先求解表达式是自左向右进行,先求解表达式1的值,然后求解表达式的值,然后求解表达式2的的值,依次类推,整个逗号表达式的值是最后一个表达式值,依次类推,整个逗号表达式的值是最后一个表达式的值。的值。21C程序设计实例教程 山东科技大学机电学院【例例3.9】计算如下逗号表达式的值。计算如下逗号表达式的值。a=3*5,a*4 /a=15,表
18、达式值表达式值60a=3*5,a*4,a+5 /a=15,表达式值表达式值20 x=(a=3,6*3)/赋值表达式,表达式值赋值表达式,表达式值18,x=18x=a=3,6*a /逗号表达式逗号表达式,表达式值表达式值18,x=3注意:注意:(1)并不是所有出现逗号的地方都是逗号表达式,如在变量说)并不是所有出现逗号的地方都是逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。明中,函数参数表中逗号只是用作各变量之间的间隔符。(2)逗号表达式中各个表达式也可以是逗号表达式的形式,即)逗号表达式中各个表达式也可以是逗号表达式的形式,即(表达式(表达式1,表达式,表达式2),表达式),表达式3,构成表达式嵌套的形式。,构成表达式嵌套的形式。(3)通常是要分别求逗号表达式内各表达式的值,并不一定要)通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。求整个逗号表达式的值。22C程序设计实例教程 山东科技大学机电学院