个人笔记,第四周:进一步的判断与循环

目录

一,逻辑类型和判断

1,逻辑类型

2,逻辑运算

3,条件运算和逗号运算

(1)条件运算

(2)逗号运算

二,级联和嵌套的判断

1,嵌套的if else

(1)认识嵌套

(2)else的匹配

二,级联的if else


一,逻辑类型和判断

1,逻辑类型

bool类型

首先需要包含一个头文件  stdbool.h 

即需要在代码开头写下 

#include<stdbool.h>

才能使用bool true和false

2,逻辑运算

计算机除了可以进行赋值运算(a=656),四则运算(加减乘除)和关系运算(大于小于等于不等于),还可以进行逻辑运算(或且非)。

逻辑运算是对逻辑量进行的运算,结果只有0或1。

逻辑量是关系运算或逻辑运算的结果。

运算符描述示例结果
逻辑非!a如果a是true结果就是false,如果a是false结果就是true
&&逻辑与a&&b

如果a和b都是true结果就是true,否则就是false

||逻辑或a||b如果a和b有一个是true结果为true,两个都是true,结果为false。

优先级

!大于&&大于||

总结

优先级
优先级运算符结合性
1()从左到右
2!+-++--从右到左(单目的+和-)
3*/%从左到右
4+-从左到右
5<<=>>=从左到右
6==!=从左到右
7&&从左到右
8||从左到右
9=+=-=*=/=%=从右到左

短路,对于&&和||,如a&&b,如果计算a时已经可以判断a&&b的值,则计算机不会计算b。

这种情况叫做短路。所以不要把赋值和复合赋值组合进表达式。

3,条件运算和逗号运算

(1)条件运算

结构

条件?满足条件后的值:不满足条件后的值

例如

a>10?a=11:a=9

表示若a>10则赋值a为11,否则赋值为9.

优先级

条件运算符高于赋值运算符,低于其他所有的运算符。

结合性为自右向左

注意:条件表达式本身比较复杂难以读懂,如果条件表达式出现了嵌套则太过混乱,所以不推荐使用嵌套表达式。

(2)逗号运算

优先级 最低

结合性 自左向右

因为其优先级为最低所以进行计算必须加()

i=(11,12);

逗号可连接两个表达式,并取右方表达式为结果,如上i为12。

但目前其唯一用处是在for中使用。

for(i=1,a=5;i<=a;i=i+1)

如上可以进行多个运算。

二,级联和嵌套的判断

1,嵌套的if else

(1)认识嵌套

当if else后的语句至少有一个独立的if时,则为嵌套的if语句。 

if(条件)
{
完整的if

}

if(a=0)
{

if(a>o)
  {
   a=10/a
   }
   else
   {
    a=10/-a
    }
}

加那么多的大括号会使代码很长,但这样做十分有必要,解释在下面。

(2)else的匹配

else是if语句中十分重要的部分,也是最易出错,混乱的部分,因此掌握好else与if的对应关系,对认清语句的意思十分重要。其规则如下:

(1)else与其最近的if相对应。

(这个if必须没有与其他else对应,因为if和else如同夫妻一样,只能一夫一妻或单身。

即若最近的if有配偶,则寻找第二近的if,以此类推。)

(2)对于大括号内的if无法与大括号外的else配对。

其次可熟记格式

for()
{}
else
{}

这也是上面要求使用大括号的原因。

为了让if代码简介明了,推荐以下遵循规则:

<1>完整的写出if else,不省略大括号。

<2>对于多级if else,需要缩进一定距离。

if(){
  if(){

    if(){}
    else{}}
  else()
}
else{}

如上,通过保持配对if else缩进同样距离,不同级if else不同缩进距离,使代码清楚整齐。

二,级联的if else

有些时候,我们的程序需要 根据值的取值范围不同 做出不同的行为,如分段函数。

这时,虽然上述方法可以使代码易懂,但是随着if else的多级嵌套,代码会向右偏移,故人们在早期规定了特殊的排列方式:级联。

 if(){
}else{if(){
     }else{if(){
          }else{if(){
               }else{if(){
                    }else{
                         }
                    }
                }
           }
      }

 但是通去除else的大括号,并以else对齐,反而更简洁明了。

 if(){
}else if(){

}else if(){

}else if(){

}else if(){

}else{}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值