逻辑类型
bool:在"#include <stdbool.h>"之后就可以使用bool和true、false
并没有真正的bool量的类型
逻辑运算
- 逻辑运算是对逻辑量进行的运算,结果只有0或1
- 逻辑量是关系运算或逻辑运算的结果
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
! | 逻辑非 | !a | 如果a是true结果就是false;如果a是false结果就是true |
&& | 逻辑与 | a&&b | 如果a和b都是true,结果就是true;否则就是false |
|| | 逻辑或 | a||b | 如果a和b有一个是true,结果为true;两个都是false,结果为false |
如果要表达数学中的区间 ,如:x(4,6)或x[4,6],用C如何写?
像4<x<6这样的式子,不是C能正确计算的式子,因为4<x的结果是一个逻辑值(0或1)
正确表达式:x>4&&x<6
判断一个字符是否是大写字母
c>='A'&&c<='Z'
* !age<20 先!与age结合,在与<20判断;而不是age>=20
优先级
! > && > || (括号可以提高优先级)
优先级 | 运算符 | 结合性 |
---|---|---|
1 | () | 从左到右 |
2 | ! + - ++ -- | 从右到左(单目的+和-) |
3 | * / % | 从左到右 |
4 | + - | 从左到右 |
5 | < <= > >= | 从左到右 |
6 | == != | 从左到右 |
7 | && | 从左到右 |
8 | || | 从左到右 |
9 | = += -= *= /= %= | 从右到左 |
短路
逻辑运算是自左向右进行的,如果左边的结果已经能够决定结果了,就不会做右边的计算
- 对于&&,左边是false时就不做右边了
- 对于||,左边是true时就不做右边了
不要把赋值,包括复合赋值组合进表达式!
条件运算和逗号运算
条件运算符
eg, count = (count > 20)?count - 10 : count + 10;
?前是条件,后是条件满足时的值,:后是条件不满足时的值
相当于
if ( count > 20 )
count = count - 10;
else
count = count +10;
条件运算符是自右向左结合的
程序太复杂,可读性差
逗号运算符
逗号用来连接两个表达式,并以其右边的表达式的值作为它的结果。逗号的优先级是所有的运算符中最低的,所以它两边的表达式会先计算,而右边的表达式的值就留下来作为逗号运算的结果。
eg, i = 3+4 , 5+6
3+4赋给了i,而5+6没有赋给任何变量
逗号表达式主要在for中使用
eg, for( i=0, j=10; i++, j-- )......