C语言学习笔记(浙大翁恺版)第六周(2)

6.2.1 逻辑类型

bool 类型:#include<stdbool.h> 包含该头文件之后可以使用bool、true、false

 

实际上并没有bool这种类型,实际上这些变量还是整数,定义、输出还是可以用整数。

6.2.2 逻辑运算

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

 

 

 如果像平时做数学一样写4<=x<=6,则计算机会先判断4<x,得到的结果是0或1。然后再判断0或1是否<=6,结果为真,因此这个语句的结果是1。

所以实际上应该用逻辑与来连接两个范围。写为:x>=4&&x<=6

由此可以延伸出其应用:判断一个字符(定义为c)是否是大写字母。

  • c>='A'&&c<='Z'

理解如下逻辑运算的意义:

  • age>20&&age<30
  • index<1||index>99
  • !age<20 

第一个意义是年龄在20到30,第二个是在1和99之外的index,第三个是age大于等于20

运算符的优先级:

!最高 &&其次 ||最低  

加上之前我们学习过的,优先级顺序为:

 也就是说!作为单目运算符优先级仅次于括号,而逻辑与和逻辑或的优先级只比赋值运算符高

 

短路 

 逻辑运算从左往右进行,如果左边运算结果已经足够决定最终结果,那么右边的计算会被跳过。

比如说逻辑与两边需要全为真,结果才为真,因此如果左边为假,结果必然是0,右边的表达式就不会计算或者判断。而对于逻辑或两边只要有真就是真,如果左边为真,结果就是1。

总结来说,&&左假则短路右边。||左真则短路右边。

如果有如下程序:

 则a++>1不会被执行,会输出OK和-1,也就是说a的值没有改变。所以最好不要把赋值/组合赋值运算放到逻辑运算里

6.2.3 条件和逗号运算 

条件运算 

count=(count>20)?count-10:count+10; 

右侧分别为条件,条件满足时候执行语句,条件不满足时候执行语句

等价于:

 条件运算是早期遗留下来的语句,如果进行嵌套的话会使可读性大大降低并增加复杂性。

逗号运算

 

 如果有语句

i=3+4,5+6;

那么如果你进行编译,程序一定会报错,这句的执行过程是,计算3+4=7,由于逗号优先级甚至低于赋值运算符,所以会先把7赋值给i,然后再来计算5+6=11,但11没有任何变量来接收它,因此编译器会报warning。如果加上括号,依旧会报warning,但是如果输出i的值,它的结果为11,因为逗号表达式的结果是右边的计算结果。

那这个东西有什么用呢?主要是用于for循环语句,我们应该还记得for语句中用分号分开了三部分,分别为初始赋值,退出条件,自增变量。在每个部分里如果想多写几个语句就需要用逗号隔开。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值