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

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

6.2.1 逻辑类型

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

 

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

6.2.2 逻辑运算

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

 

 

 如果像平时做数学一样写4<=x<=6,则计算机会先判断4

所以实际上应该用逻辑与来连接两个范围。写为: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语句中用分号分开了三部分,分别为初始赋值,退出条件,自增变量。在每个部分里如果想多写几个语句就需要用逗号隔开。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/733561.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-27
下一篇2022-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存