文档介绍:1
第四章选择分支结构程序设计
关系运算
逻辑运算
二路分支--- if语句
条件运算符与表达式
多路分支--- switch语句
2
选择结构
根据条件决定执行二路或多路分支中的一路
分为:
二路分支
多路分支
if …else…语句
switch语句
条件:一般由关系表达式或逻辑表达式构成,其值都是一个逻辑值:真或假。
C语言用1表示真,用0表示假; 判断时非0为真。
3
关系运算符
> 大于>= 大于等于
< 小于<= 小于等于
= = 等于! = 不等于
4
说明:
(1) 六个关系运算符都是双目运算符,左结合性;
(2) 用关系运算符将两个任意类型的表达式连接起来的式子,称为关系表达式。它的结果是逻辑值“0”或“1”。
(3)两个运算对象可以是算术表达式、字符表达式等。如果是字符数据时,按其ASCII码值进行比较。
例: int i=3,j=5;
i<j 的运算结果是真值“1”
i>j 的运算结果是假值“0”
例:‘a’>‘b’值为假值“0”
i+j<100 值为真值“1”
5
(5)关系表达式的值可以作为整数值参与运算
(4)与数学表达式的区别
(6)注意区分“=”与“==”的差别
例:int a=3,b=2,c=1,f;
f=a>b>c; f的值为0
例:3<x<100
先计算3<x的值,再将此关系运算结果与数值100进行比较
例:x=5; 将数值5赋给变量x
x==5; 判断x当前的值与5是否相等
6
例若a=0; b=; x=;
则 a<=x<=b的值为0
例'a'>0 结果为1
'A'>100 结果为0
例注意区分"="与"=="的差别
int a=0,b=1;
if(a=b) printf("a equal to b");
else printf("a not equal to b");
例应避免对实数作相等或不等的判断
如 *== 结果为0
可改写为:fabs(*-)<1e-6
关系运算注意:
7
在C语言中有三个逻辑运算符
&& 逻辑与
|| 逻辑或
! 逻辑非
在C语言中,为了表示数学表达式3<x<100,需要使用两个关系表达式,为此要要引入逻辑运算符
意义:a&&b 当a和b同时为真时,表达式的值为真
a||b 当a和b之一为真时,表达式的值为真
!a 当a的值为真,则表达式的值为假
8
说明:
(1)&&和||是双目运算符,!是单目运算符
(2)&&和||的运算级别低于关系运算符,
!的运算级别高于关系运算符和算术运算符,
注意: !的结合方向是从右向左。
&&和||的结合方向是从左向右,
(3)不能确定的情况下,添加括号保证运算次序。
尽量避免复杂烦琐的逻辑表达式。
例:a=10;b=20;c=30;
a=(--b<=a)||(a+b!=c);
a=? b=?
a=1 b=19
优先级顺序:
①!
②算术运算符
③关系运算符
④&&
⑤||
⑥赋值运算符
9
(5) 在逻辑表达式的求解中,并不是所有的逻辑运
算符都被执行,只有在必须执行下一个逻辑运
算符才能求出表达式的解时,才执行该运算符。
例: int x=-1;
执行了++x||++x||++x 后,x的值是?
x=1
(4)C语言无专门的逻辑类型,参加逻辑运算的运算对象
可以是0(“假”)或任何非0的数值(“真”);
在判别时,“非0”作为“真”, “0”作为“假”
但逻辑运算后的结果只能是逻辑值0和1。
例: 10&&7 10||5
10
1. 简单if语句
语句形式:
if(表达式) 语句1;
执行过程:
如果表达式值为“真”,执行该语句1,然后执行if的下一个语句;
否则直接执行if的下一个语句。
例: if(x>y) printf("%d",x);
二路分支---if语句