关系与逻辑
关系运算比较大小得到真假;逻辑运算把多个真假条件组合起来。C 里真常用非 0,假是 0。
1. 例子
| 1 | int a = 5, b = 10; |
| 2 | printf("%d\n", a > b); // 0 |
| 3 | printf("%d\n", a != b); // 1 |
| 4 | |
| 5 | if (a > 0 && b > 0) { |
| 6 | printf("都是正数\n"); |
| 7 | } |
| 8 | |
| 9 | if (!(a == b)) { |
| 10 | printf("不相等\n"); |
| 11 | } |
2. 概念:短路求值
&& 左边为假时,右边可能不执行;|| 左边为真时,右边可能不执行。可用于防空指针:
| 1 | if (p != NULL && p->count > 0) { |
| 2 | /* 先保证 p 非空,再访问成员 */ |
| 3 | } |
3. 易错
- if (x = 1) 是赋值,不是比较
- 浮点不要用 == 判断相等
- == 两边类型不匹配时注意整数提升