该系列为本人的学习笔记,主要由本人整理书写而成。部分内容来自教材、视频课程等,不能保证完全原创性。
萌新的学习笔记,写错了恳请斧正。
# 关系操作符
C 语言中用于比较的表达式称为 “关系表达式”, 其中的运算符称为 “关系运算符”
关系运算符包括:>、<、>=、<=、==、!=
其中 == 是判断两边是否相等,而!= 是判断两边是否不等
关系表达式的返回值为 0 或者 1, 表示假或真
注意:“==” 是判断相等,而 “=” 是赋值,两者不能搞混
为了防止将 “==” 与 “=” 搞混 (这很常见), 我们可以这么写:
if (3 == x) // 将数值放在前面,变量名放后面 | |
// 这样如果搞混了就会报错 |
另外:不要将多个关系运算符想当然的连用,如:
if (i < j < k) |
这样看起来是正确的,可以判断 j 在 i 与 k 之间
但实际上,i <j 会先得到结果 “真” 或 “假”, 即 0 或 1
随后得到的 0 或 1 再与 k 比较,这显然不符合预期
如果真的像判断 j 在 i 与 k 之间,应该这么写:
if (i < j && j < k) |
其中 “&&” 属于逻辑操作符,这是什么呢?
# 逻辑操作符:&&、||、!
逻辑操作符用于构建逻辑判断,一般有如下几种:
- &&: 逻辑与 (并且), 如果两侧表达式均为真才输出真,其余输出假
- ||: 逻辑或 (或者), 两侧至少有一个为真即输出真,都假即输出假
- !: 逻辑非 (取反), 连接一个表达式,反转其真假性 (连在表达式左边)
表达式 && 表达式 | |
表达式 || 表达式 | |
!表达式 // 紧密连接 |
在 C 语言中,非 0 为真、0 为假,但由表达式输出的真为 1
下面练习一下:
// 判断闰年 | |
#include <stdio.h> | |
int main() | |
{ | |
int year = 0; | |
scanf("%d", &year); | |
if(year%4==0 && year%100!=0 || year%400==0) | |
printf("是闰年\n"); | |
return 0; | |
} |
# 短路
C 语言中逻辑运算符先处理左侧表达式的结果
如果左侧表达式已经能把该逻辑运算符控制的逻辑判断确定
那么右侧的表达式就不会被计算,这被称为 “短路”
比如说,&& 左侧的表达式为假,则右侧不计算直接输出假
而 || 左侧的表达式为真,则右侧不计算直接输出真
# 条件操作符:... ? ... : ...
条件操作符是唯一一个三目操作符,用法如下:
表达式1 ? 表达式2 : 表达式3 |
如果表达式 1 为真,则计算表达式 2, 这时表达式 2 的结果为整个表达式的结果
如果表达式 1 为假,则计算表达式 3, 这时表达式 3 的结果为整个表达式的结果
这也可以用于构建选择结构