1、讲讲-双路分支程序双路分支程序设计设计知知 识识 回回 顾顾1.1.副作用与表达式求值副作用与表达式求值3.3.常用库函数常用库函数隐式类型转换隐式类型转换强制类型转换强制类型转换2.2.混合表达式与数据类型转换混合表达式与数据类型转换4.4.简单程序设计简单程序设计问问 题题 引引 出出1.1.简单的程序设计情况比较简单、顺序执行简单的程序设计情况比较简单、顺序执行2.2.现实问题不可能如此简单现实问题不可能如此简单试回顾上次课最后的程序,如果用户在运行程序后输试回顾上次课最后的程序,如果用户在运行程序后输入一个负数,会发生什么事情呢?入一个负数,会发生什么事情呢?回答是:程序仍将执行,并给
2、出了一个错误的结果,回答是:程序仍将执行,并给出了一个错误的结果,显然程序是存在缺陷的显然程序是存在缺陷的解决的办法:在设计程序时,应该考虑输入的是正数解决的办法:在设计程序时,应该考虑输入的是正数还是负数的不同情况有选择地进行不同处理还是负数的不同情况有选择地进行不同处理这就是本次课要研究的这就是本次课要研究的分支程序设计分支程序设计主主 要要 内内 容容3.1 3.1 关系与逻辑运算关系与逻辑运算3.1.1 3.1.1 逻辑数据逻辑数据3.1.2 3.1.2 关系运算关系运算3.1.3 3.1.3 逻辑运算逻辑运算目的要求目的要求复习思考题复习思考题3.2 3.2 两路分支两路分支3.2.
3、1 ifelse3.2.1 ifelse语句语句3.2.2 if3.2.2 if语句语句3.2.3 if3.2.3 if语句的嵌套语句的嵌套3.2.4 3.2.4 条件表达式条件表达式3.1 3.1 关系与逻辑运算关系与逻辑运算3.1.1 3.1.1 逻辑数据逻辑数据1.1.用来表示用来表示“真真”和和“假假”的数据称为逻辑数据的数据称为逻辑数据 2.C2.C中没有逻辑类型,它用其它类型来表示逻辑型数据中没有逻辑类型,它用其它类型来表示逻辑型数据 3.1.1 3.1.1 逻辑数据逻辑数据3.C3.C中规定,中规定,0 0值表示值表示“假假”,非,非0 0值表示值表示“真真”图图3-1 C3-1
4、 C中的逻辑数据表示中的逻辑数据表示(1)(1)也叫比较运算,用来比较两个值的大小也叫比较运算,用来比较两个值的大小,结果是逻辑值结果是逻辑值3.1.2 3.1.2 关系运算关系运算3.1.2 3.1.2 关系运算关系运算1.1.关系运算概述关系运算概述1.1.关系运算概述关系运算概述(2)C(2)C中有中有6 6种关系运算种关系运算表表3-1 关系运算符关系运算符举举例例(1)(1)关系运算是二元运算,对两个值进行大小比较关系运算是二元运算,对两个值进行大小比较2.2.注意事项注意事项2.2.注意事项注意事项(2)(2)任意类型的表达式都可以参加比较运算任意类型的表达式都可以参加比较运算 若
5、有下面的定义:若有下面的定义:int m,n;int m,n;int a=1,b=2;int a=1,b=2;float y=5,z;float y=5,z;则下列的表达式都是合法的:则下列的表达式都是合法的:5 3 /5 3 /*两个初级表达式(常量)比较两个初级表达式(常量)比较 */y=3 /y=b+/-a=b+/*一元表达式与后缀表达式进行比较一元表达式与后缀表达式进行比较 */(m=4)=(n=3)/(m=4)=(n=3)/*两个赋值表达式进行比较两个赋值表达式进行比较 */(y 3(y 3)5)/5)/*两个关系表达式进行比较两个关系表达式进行比较 */举举例例(3)(3)关系运算
6、的结果是逻辑值关系运算的结果是逻辑值“真真”或或“假假”(4)(4)若结果为若结果为“真真”则值是则值是1;1;若结果为若结果为“假假”则值是则值是0 0 若有下面的定义:若有下面的定义:int a=3int a=3,b=2,x=5;b=2,x=5;则下列的表达式:则下列的表达式:5 3 5 3 结果为结果为“真真”值为值为 1 1 x=3 x=b+-a=b+结果为结果为“真真”值为值为 1 1(5)(5)前四个的优先级高于后两个,结合性都是左结合前四个的优先级高于后两个,结合性都是左结合举举例例a=b c a=b c 等价于等价于 a=(b c)a=(b c)a b c a b c 等价于等
7、价于 (a b)c)(a b)c)(6)(6)不可以简单地通过几个连续的关系运算来构建复杂的条件不可以简单地通过几个连续的关系运算来构建复杂的条件举举例例3 x 5 3 x 5 不能表示不能表示x(3,5)x(3,5)(1)(1)逻辑运算是对逻辑值进行的运算逻辑运算是对逻辑值进行的运算,结果还是逻辑值结果还是逻辑值3.1.3 3.1.3 逻辑运算逻辑运算1.1.逻辑运算概述逻辑运算概述(2)C(2)C中有中有3 3种逻辑运算种逻辑运算3.1.3 3.1.3 逻辑运算逻辑运算1.1.逻辑运算概述逻辑运算概述表表3-2 3-2 逻辑运算符逻辑运算符(1)(1)逻辑运算是对逻辑值实施的运算,结果还是
8、逻辑值逻辑运算是对逻辑值实施的运算,结果还是逻辑值2.2.注意事项注意事项2.2.注意事项注意事项举举例例(2)(2)任意类型的表达式都可以参加逻辑运算任意类型的表达式都可以参加逻辑运算 若有下面的定义:若有下面的定义:int a=0,b=13;int a=0,b=13;float y=-3.14;float y=-3.14;char c=A;char c=A;则下列的表达式都是合法的:则下列的表达式都是合法的:!5 5 结果为结果为“假假”值为值为0 0!a !a 结果为结果为“真真”值为值为1 1!y !y 结果为结果为“假假”值为值为0 0!(b%2)!(b%2)结果为结果为“假假”值为
9、值为0 0a=0&a=0&a=a&c=A&c=a&c=A&c b)&(n=c b)&(n=c=5?y=x x=5?y=x*x:y=x+x x:y=x+x(4)(4)条件表达式的值是表达式条件表达式的值是表达式2 2或表达式或表达式3 3中一个的值中一个的值 处理过程是处理过程是:先计算表达式先计算表达式1 1,若非,若非0(0(真真),则求表达式,则求表达式2 2的值;否则求表达式的值;否则求表达式3 3的值,并把求得的值作为整个表达式的值的值,并把求得的值作为整个表达式的值 图图3-13 3-13 条件表达式条件表达式(1)(1)优先级是优先级是3 3,比赋值运算高,比赋值运算高2.2.注意
10、事项注意事项2.2.注意事项注意事项(2)(2)三项条件表达式可以嵌套三项条件表达式可以嵌套flag=x%2?1:0;表达式表达式1表达式表达式2表达式表达式3表达式表达式31表达式表达式32表达式表达式33flag=x 0?1 :x 0?1 :x 0?-1 :00 x10 x 0 0 x 1flag目目 的的 要要 求求1.1.理解理解C C中逻辑数据的表示方法中逻辑数据的表示方法2.2.掌握关系运算和逻辑运算种类和处理方法掌握关系运算和逻辑运算种类和处理方法4.4.掌握掌握ifelseifelse语句语句,if,if语句和嵌套结构的用法语句和嵌套结构的用法3.3.理解逻辑短路的概念和意义理
11、解逻辑短路的概念和意义5.5.掌握条件表达式及其处理方法掌握条件表达式及其处理方法复习思考题复习思考题*6.6.在在ifelseifelse嵌套结构中,嵌套结构中,ifif与与elseelse的配对原则是什么的配对原则是什么?说明:题目前面的说明:题目前面的*代表问题的重要程度代表问题的重要程度*1.1.什么是逻辑数据什么是逻辑数据?在在C C中如何表示逻辑数据中如何表示逻辑数据?*2.2.在在C C中,关系运算有哪些中,关系运算有哪些?使用中应注意什么使用中应注意什么?*3.3.在在C C中中,逻辑运算有哪些逻辑运算有哪些?使用中应注意什么使用中应注意什么?*4.4.逻辑短路是什么逻辑短路是什么?*5.5.在在if(e)s;if(e)s;和和if(!e)s;if(!e)s;中,中,s s被执行的条件是什么被执行的条件是什么?*7.7.什么是条件表达式什么是条件表达式?如何处理如何处理?