第四章总结

4.1引例

例4.1

4.2例 

 

4.2关系运算符,逻辑运算符,条件运算符

4.2.1关系运算符和关系表达式

1,关系运算符

关系运算符用于判断两个操作数的大小关系。

>大于,<小于,==等于,>=大于等于,<=小于等于,!=不等于

注意:

(1)关系运算符都是双目运算符,其结合方向是左结合。

(2)关系运算符的优先级低于算术运算符但高于赋值运算符。

(3)关系运算符中,>,<,>=,<=的优先级相同,==,!=的优先级别相同,前者的优先级高于后者,即>=的优先级高于==。

2,关系表达式

用关系运算符将两个表达式连接起来的式子称为关系表达式。

表达式1关系运算符表达式2

功能:比较两个表达式的大小,放回一个逻辑值

例如:a+b>=c-d,x<=3/2,'a'+1!=c,-i-5*j==k+1都是合法的关系表达式

关系表达式中允许出现嵌套的情况如:a>(b>c),a!=(c==d)

注意:

(1)注意分区运算符=和==。=是赋值运算符,==是关系运算符。

(2)对实数进行相等判断可能得不到正确的结果,例如1.0/3*3.0==1.0的结合为0.

(3)关系表达式中可以出现赋值运算符如a>(b=0),但不能写成a>b=0,因为关系表达式的优先级高于赋值运算符,表达式a>b=0,可以写成(a>b)=0.

关系表达式主要用于分支结构的判断。关系表达式的结果是一个逻辑值真或假,0或1。

例4.3

4.22逻辑运算符和逻辑表达式

1,逻辑运算符

关系表达式只能描述单一的条件。

非假既真,非真既假

逻辑非!,逻辑与&&,逻辑或||

逻辑非>逻辑与>逻辑或

!>&&>||

注意

与运算符&&和或运算符||都是双目运算符,非运算符!为单目运算符。

2,逻辑表达式

逻辑运算符将两个表达式连接起来的式子称为逻辑表达式。

表达式1 逻辑运算符 表达式2

逻辑运算符 表达式1 

逻辑表达式的结果也是一个逻辑值真或假,即1或0

x                    y                    !x                    x&&y                    x||y

0                    0                    1                       0                             0

0                          1                   1                   0                      1

1                       0                     0                        0                       1

1                          1                        0                     1                       1

逻辑表达式的说明:

(1)参与逻辑运算的数据可以是0和1,也可以是非零值和0,还可以是任何类型的数据,但最终都是以非0和0来判断他们是真或者假

(2)在逻辑表达式中也可以使用赋值运算符,如a&&(b=0)不能写成a&&b=0的形式。逻辑运算符的优先级高于赋值运算符,表达式a&&b=0相当于(a&&b)=0,赋值运算符左边不是变量,会出现编译错误。

(3)

C语言规定,只对决定整个表达式值所需的最少数目的子表达式进行运算。

1,对于逻辑与(&&)运算,若&&左边的值为假,则可以得出整个表达式的值为假,那么&&右边的表达式将不再进行计算;只能当&&左边的表达式值为真时才计算右边表达式的值。

2,对于逻辑或||运算,若||左边的值为真,则可以得出整个表达式的值为真,那么||右边的表达式将不再进行计算;只能当||左边的表达式值为假时才计算右边表达式的值。

4.4例

 

 

 4.5例

 

 各种运算符的优先级从高到低的顺序

赋值运算符<&&和||<关系运算符<算术运算符<!

4.2.3条件运算符和条件表达式

1,条件运算符

条件运算符由?和:两个符号组成,用于条件求值,它是一个三目运算符,需要三个操作数。条件运算符的优先级低于逻辑运算符,高于赋值运算符,它是右结合的。

2,条件表达式

表达式1?表达式2:表达式3

条件表达式的执行顺序是:先计算表达式1的值,若值为非0,表示条件为真,表示条件为真,则将表达式2的值作为整个条件表达式的值,否则,将表达式3的值作为整个条件表达式的值。

关于条件表达式的说明:

(1)条件表达式中表达式1的类型可以与表达式2和表达式3不同,表达式2和表达式3的类型也可以不同,此时系统自动进行转换,结果为表达式2和表达式3中级别类型较高的,并将其作为条件表达式的类型。

(2)条件表达式中表达式2和表达式3不仅可以是数值表达式,还可以是赋值表达式或函数表达式。

(3)条件表达式允许嵌套。

例4.6

 

 4.3使用if-else实现分支结构

4.3.1if-else语句

1,双分支if语句

     if(表达式)

              语句1:

else

          语句2:

 

 例4.7

 

 

 4.8例

 

 双分支if语句可以用条件表达式替换

if(a>0)

  y=a

else                                       等价于y=(a>0)?a;(-a)

  y=-a

2,单分支if语句

if(表达式)

    语句:

 4.9例

 

4.10例

 

 

 

 4.11例

 4.3.2if语句的嵌套

if语句的基本形式

if(表达式)

    语句1

else

   语句2

如:

if(表达式1)

if(表达式2)

      语句1;          语句1嵌套的if语句

else

    语句2;

else

if(表达式1)

    语句3;            语句2嵌套的if语句

else

语句4;

                                                 if语句嵌套结构流程

在if语句嵌套的结构中一定要注意else与if之前的对应关系 

4.12例

4.13例

 

if(x>=0)

if(x>0)

y=1;

else

y=0;

else

y=-1;

4.3.3多分支if语句

多分支if语句是最常用的实现多路分支的办法

if(表达式1)

语句1;

else if(表达式2)

语句2;

........

else if(表达式n-1)

语句n-1;

else

语句n;

                                                                多分支结构流程

4,14例

4.15例

 

 

 4.4使用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语句允许嵌套使用

在switch语句格式中的每个语句后面都使用bresk语句

4.16例

 

 

 在switch语句格式中的部分语句后面使用break语句

 4.17

 4.18例

 

 3,在swich语句格式中不使用break语句

4.5分支结构程序设计示例

4.19例

 

 例4.20

 

4.21例

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值