第四章总结

4.1引例
例4.1
例4.2
4.2关系运算符、逻辑运算符、条件运算符
4.2.1关系运算符与关系表达式
1.关系运算符
关系运算符用于判断两个操作数的大小关系。在C语言中有6个关系运算符,如下
运算符 含义

大于
= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于
注意
(1)关系运算符都是双目运算符,其结合方向是左结合
(2)关系运算符的优先级低于算术运算符,但是高于赋值运算符
(3)关系运算符中,>,<,>=,<=的优先级相同==,!=的优先级相同,前者的优先级高于后者即“>=”的优先级高于“”。
2.关系表达式
用关系运算符加两个表达是连接起来的式子称为关系表达式。关系表达式的一般形式为
表达式1关系运算符 表达式2
功能:比较两个表达式的大小,返回一个逻辑值。
注意:
(1)注意区分运算符“=”和“”。“=”是赋值运算符,“==”是关系运算符。
(2)对实数进行相等判断可能得不到正确的结果。
(3)关系表达式中可以出现赋值运算符,因为关系运算符的优先级高于赋值运算符,赋值y运算符左边不是变量,会出现编译错误。
关系表达式主要用于分支结构中的条件判断。关系表达式的结果是一个逻辑值“真”或“假”,由于C语言中没有逻辑类型的数据,因此用“1”表示“真”,“0”表示“假”
4.2.2逻辑运算符和逻辑表达式
1.逻辑运算符
关系表达式只能描述单一的条件。
注意:与运算符&&和或运算符||都是双目运算符,非运算符!为单目运算符。
2.逻辑表达式
用逻辑运算符将两个表达连接起来的式子称为逻辑表达式,逻辑表达式的一般形式为
表达式1 逻辑运算符 表达式2

逻辑运算符 表达式 1
逻辑表达式的结果也是一个逻辑值“真”或“假”即为“1”获取“0”。
关于逻辑表达式的说明:
(1)参与逻辑运算的数据可以是1和0,也可以是非零值和零,还可以是任何类型的数据,但最终都是以非0和0来判断他们是“真”或“假”。
(2)在逻辑表达式中也可以使用赋值运算符,因为逻辑运算符的优先级高于赋值运算符,赋值运算符左边不是变量,会出现编译错误。
(3)C语言规定,只对决定整个表达式值所需的最少数目的子表达式进行运算。即在由若干个子表达式组成的逻辑表达式中,从主向右计算,当计算出一个子表达式的值就确定了整个逻辑表达式的值时,此后就不再计算右边剩下的子表达式的值,这种情况称为“短路”
对于逻辑与(&&)运算,若“&&”左边的表达式的值为假,则可以得出整个表达式的值为假,那么“&&”右边的表达式将不再进行计算;只有当“&&”左边的表达式值为真时才计算右边表达式的值。
对于逻辑或(||)运算,若“||”左边的表达式的值为真,则可以得出整个表达式的值为真,那么“||”右边的表达式将不再进行计算;只有当“||”左边的表达式为假时才计算右边表达式的值。
算术运算符、关系运算符及逻辑运算符的优先级从高到低的顺序如下:
!到算术运算符到关系运算符到赋值运算符到&&和||
结核性:
!为右结合、算术运算符为左结合、关系运算符为左结合、&&和||为左结合、赋值运算符为右结合
4.2.3条件运算符合条件表达式
1.条件运算符
条件运算符由“?”和“:”两个符号组成,用于条件求值,它是一个三目运算符,需要三个操作数。条件运算符的优先级低于逻辑运算符高于赋值运算符,它是右结合的。
2.条件表达式
由条件运算符将3个表达式连接起来的式子称为条件表达式,其一般形式为;
表达式1?表达式2:表达式3
条件表达式的执行顺序是:先计算表达式1的值,若值为非0,表示条件为真,则将表达式2的值作为整个条件表达式的值,否则,将表达式3的值作为整个条件表达式的值。
关于条件表达式的说明:
(1)条件表达式中表达式1的类型可以与表达式2和表达式3不同,表达式2和表达式3的类型也可以不同,此时系统会自动进行转化,结果为表达式2和表达式3中级别类型较高的,并将其作为条件表达式的类型。
(3)条件表达式中表达式2和表达式3不仅可以是数值表达式,还可以是赋值表达式或函数表达式,条件运算符的优先级高于赋值运算符。
(3)条件表达式允许嵌套。
4.3使用if- else实现分支结构
4.3.1 if- else
1.双分支if语句
其一般表达式如下:
if(表达式)
语句1;
else
语句2;
其语义是首先求解表达式,如果表达式的值为“真”,则执行语句2;若表达式的值为“假”,则执行语句2,无论执行完语句1还是语句2,都会结束整个if语句的执行。
双分支if语句可以用条件表达式替换。当if语句中只给同一个变量赋值时,可以使用条件表达式代替if语句。
2.单分支if语句
其一般形式如下:
if(表达式)
语句;
双分支if- else语句中,若缺省了“语句2时”,则构成了单分支语句,执行流程图。其语义是首先计算表达式,如果表达式的值为“真”,则执行语句;否则不执行语句,直接执行if语句的下一语句。无论在双分支还是单分支if语句的格式中,“表达式”都是用来描述判断的条件,语法上可以是任意类型的表达式。表达式的结果如果为“0”,表示“假”;结果为“非0”,则表示“真”。无论在双分支还是单分支if语句的格式中,被执行的语句均为单个语句。如果想要执行一组语句时,则必须将这一组语句用{}括起来起来形成复合语句,但在“}”之后不能再加括号。注意,复合语句中的语句执行时会全部被执行。
4.3.2 if语句的嵌套
一个if语句中又包含一个或多个if语句的现象称为if语句的嵌套。
if语句的基本形式:
if(表达式)
语句1;
else
语句2;
其中“语句1”或“语句2”都可以嵌套另一个if语句,在缺省else部分的if语句中的“语句”,也可以嵌套另一个if语句。因此,具体嵌套形式可以有很多种。
在C语言中规定其对应原则是:else总是与它前面最近的一个未匹配的if相匹配。
4.3.3多分支if语句
多分支if语句是最常用的实现多路分支的方法,其一般形式如下:
if(表达式1)
语句1;
if(表达式2)
语句2;
if(表达式n-1)
语句n-1;
else
语句n;
首先求解表达式1,如果表达式的值为“真”,则执行语句1,并结束整个if语句的执行;否则,求解表达式2,…,若表达式1至表达式n-1的值都为“假”时,执行语句n。
4.4使用switch语句实现分支结构,在C语言中还提供了一种switch语句也可以实现多分支的选择。
其语句的一般形式如下:
switch(表达式)

case常量表达式1:语句1;break;
case常量表达式2:语句2;break;

case常量表达式n:语句n;break;
default:语句n+1;break;

switch语句执行结果其执行过程为:首先计算switch后面括号内的表达式,然后将表达式的值从上到下按顺序与各个case后面的常量表达式的值进行比较,若与某个常量表达式的值相等,则执行该常量表达式后面的语句,然后执行break语句,跳出switch语句,switch语句执行结束;如果表达式的值与任何一个常量表达式的值都不相等,则执行default后的语句,结束语句switch的执行。
关于switch语句的几点说明:
(1)switch后的表达式可以是任意表达式,其值只能为整形、字符型、枚举型之一。
(2)每个case后面的常量表达式的值互不相同,否则就会出现互相矛盾的现象。
(3)各个case和default的出现次序不影响执行结果。
(4)可以让多个case共用一组执行语句。
(5)switch语句允许嵌套使用。

在switch语句格式中的每个语句后面都使用break语句
在switch语句格式中的部分语句后面使用break语句
在switch语句格式中不使用break语句
switch语句中不使用break语句时,程序在执行相应语句后,不会跳出正在执行的switch语句,而会继续执行其后的所有语句。
4.5分支结构程序设计示例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值