4.1:引例
4.2:关系运算符、逻辑运算符、条件运算符。
知识点:
- 关系运算符用于判断两个操作数的大小关系。
注意:
(1)关系运算符都是双目运算符,其结合方向是左结合。
(2)关系运算符的优先级低于算术运算符,但是高于赋值运算符。
(3)关系运算符中,>.<、>=、< =的优先级相同,==、!=的优先级相同,前者的优先级高于后者,即“>一”的优先级高于“一=”。
- 关系表达式用关系运算符将两个表达式连接起来的式子称为关系表达式。关系表达式的一般形式为:
表达式1关系运算符表达式2
4.2.2:逻辑运算符和逻辑表达式
1.逻辑运算符
关系表达式只能描述单一的条件。
知识点:
注意:与运算符&&和或运算符ll都是双目运算符.非运算符!为单目运算符。
2.逻辑表达式用逻辑运算符将两个表达式连接起来的式子称为逻辑表达式。逻辑表达式的一般形式为:
表达式1逻辑运算符表达式2
或 逻辑运算符表达式1
逻辑表达式说明:
(1)参与逻辑运算的数据可以是1和0.也可以是非零值和0.还可以是任何类型的数据,但最终都是以非0和0来判断他们是“真”或“假”。
(2)在逻辑表达式中也可以使用赋值运算符.如“a&&(b=0)",但是不能写成“a&&.b=0”的形式。因为逻辑运算符的优先级高于赋值运算符,表达式“a&.&b=0”相当于“(a&&b)=0" ,赋值运算符左边不是变量,会出现编译错误。(重点)
(3)C语言规定,只对决定整个表达式值所需的最少数目的子表达式进行运算。即在由若干个子表达式组成的逻辑表达式中,从左向右计算,当计算出一个子表达式的值就确定了整个逻辑表达式的值时,此后就不再计算右边剩下的子表达式的值,这种情况称为“短路”。(重点)
①对于逻辑与(&&)运算,若“&.&."左边的表达式的值为假,则可以得出整个表达式的值为假,那么“&&"右边的表达式将不再进行计算;只有当“&&"左边的表达式值为真时才计算右边表达式的值。
②对于逻辑或(ll)运算,若“ll”左边的表达式的值为真,则可以得出整个表达式的值为真,那么“ll”右边的表达式将不再进行计算;只有当"ll"左边的表达式值为假时才计算右边表达式的值。
逻辑表达式举例:
①ch是英文字母。逻辑表达式为(ch>= ‘a’ &.& ch<= ‘z)||(ch>= ‘A’ &.& ch< = ‘Z)。
②a,b不同时为0。逻辑表达式为!(a0&&.b0)或a!=0||b!=0或a|lb.
③ch是空格或回车。逻辑表达式为(ch==’‘II (ch==’\n’)。
year是闰年,即year能被4整除但不能被100整除,或year能被400整除。逻辑表达式为(year%4==0 &. &. year%100!=0)||(year%400= =0)。
4.2.3条件运算符和条件表达式
1:条件运算符
条件运算符由“?”和“:”两个符号组成,用于条件求值,它是一- 个三目运算符,需要三个操作数。条件运算符的优先级低于逻辑运算符、高于赋值运算符,它是右结合的。
2:条件表达式
由条件运算符将3个表达式连接起来的式子称为条件表达式,其一般形式为:
表达式1?表达式2:表达式3
条件表达式的执行顺序是:
先计算表达式1的值,若值为非0,表示条件为真,则将表达式2的值作为整个条件表达式的值,否则,将表达式3的值作为整个条件表达式的值。
关于条件表达式的说明:
(1)条件表达式中表达式1的类型可以与表达式2和表达式3不同,表达式2和表达式3的类型也可以不同,此时系统会自动进行转换,结果为表达式2和表达式3中级别类型较高的,并将其作为条件表达式的类型。
(2)条件表达式中表达式2 和表达式3不仅可以是 数值表达式,还可以是赋值表达式或函数表达式,条件运算符的优先级高于赋值运算符,因赋值运算符左边不是变量,所以会出现编译错误。
(3)条件表达式允许嵌套。
4.3使用i-else实现分支结构
4.3.1: if-else语句
1.双分支if语句
其一般形式如下:
if(表达式)
语句1;
else
语句2;
2.单分支if语句
其一般形式为:
if(表达式)
语句
注意:
无论在双分支还是单分支if语句的格式中,“表达式”都是用来描述判断的条件,语法上可以是任意类型的表达式。表达式的结果如果为“0”,表示“假”;结果为“非0”,则表示“真”。
4.3.2:if语句的嵌套
一个if语句中又包含一个或多个if语句的现象称为if语句的嵌套。
if语句的基本形式:
if(表达式)
语句1;
else语句
注意:
在c语言中规定其对应原则是celse总是与它前面最近的一个未匹配的if相匹配。
4.3.3:多分支if语句
4.4:使用switch语句实现分支结构
在C语言中还提供了一.种switch语句也可以实现多分支的选择。switch语句的一般形式如下:
switch(表达式)
{
case常量表达式1:语句1; break ;
case常量表达式2:语句2 ;break ;
case常量表达式n:语句n;break;
default:语句n+1;break;
}
关于switch语句的几点说明:
(1)switch后的表达式可以是任何表达式,其值只能为整型、字符型、枚举型
(2)每个case后面的常量表达式的值互不相同,否则就会出现互相矛盾的现象。
(3)各个case和default的出现次序不影响执行结果。
(4)可以让多个case共用一组执行语句。
(5)switch语句允许嵌套使用
知识点:
1:在switch语句语句格式中每个语句后面都使用break语句
2:在switch语句语句格式中的部分语句后面都使用break语句
3:在switch语句格式中不使用break语句
4.5:分支结构程序设计示例