一、关系操作符
关系操作符
>
>=
<
<+
!+ 用于测试“不相等”
== 用于测试“相等”
二、逻辑操作符
C语言中的&&
运算符表示逻辑与(Logical AND)。它用于连接两个布尔表达式或条件,并且只有当这两个表达式都为真(即非零)时,整个表达式的结果才为真。
使用场景
-
条件判断: 当你需要同时检查多个条件是否为真时,可以使用
&&
。例如,检查两个变量的值是否都满足某个特定条件。
int a = 5;
int b = 10;
if (a > 0 && b > 0) {
// 当a和b都大于0时执行
}
- 安全检查: 在进行某些操作之前,你可能需要检查多个条件是否都满足,以确保操作的安全性。例如,在访问数组元素之前,检查索引是否在有效范围内。
int index = 3;
int array[10];
if (index >= 0 && index < 10) {
// 只有当index在0到9之间时才访问array[index]
array[index] = 50;
}
-
复合条件逻辑: 在需要基于多个条件的复合逻辑来决定程序的执行流程时,
&&
可以与其他逻辑运算符(如||
)结合使用。
int age = 20;
bool hasLicense = true;
if (age >= 18 && hasLicense) {
// 只有当年龄大于等于18且拥有驾驶执照时才允许驾驶
}
短路特性
在这段代码中,&&
运算符用于连接三个表达式:a++
、++b
和d++
。这些表达式在逻辑与操作中依次进行评估。由于&&
是逻辑与运算符,如果它遇到任何为假(即值为0)的表达式,整个表达式的值立即确定为假(0),并且停止评估剩余的表达式。这是所谓的短路行为。
现在,让我们逐步分析这段代码:
i = a++ && ++b && d++;
- 首先评估
a++
。这是一个后增量运算符,所以它首先返回a
的当前值,然后将a
的值增加1。因为初始时a
为0,所以这个表达式的结果是0(假)。 - 由于
a++
的结果是0,&&
运算符的短路特性意味着++b
和d++
都不会被执行。整个表达式的结果是0,赋值给i
。
- 打印变量的值。
-
a
的值在执行a++
后变成了1。 -
b
、c
、d
的值保持不变,因为++b
和d++
都没有被执行。所以b
是2,c
是3,d
是4。
因此,当执行这段代码时,输出将是:
a = 1
b = 2
c = 3
d = 4
这个例子很好地展示了逻辑与运算符&&
的短路特性,以及它是如何影响表达式中剩余部分的评估的。
三、条件操作符
exp1 ? exp2 : exp3
exp1 ? exp2 : exp3
是一个三元运算符(Ternary Operator)表达式,有时也称为条件运算符。它是C语言中非常常用的一种简洁表达条件逻辑的方式。
这个表达式的工作方式如下:
-
exp1
是一个条件表达式。 - 如果
exp1
的结果为真(非零),则整个表达式的结果是exp2
。 - 如果
exp1
的结果为假(零),则整个表达式的结果是exp3
。
换句话说,它是一个简短的方式来表示“如果-那么-否则”逻辑(if-then-else)。
例如:
int a = 10, b = 20;
int max = (a > b) ? a : b;
这里,max
会被赋值为 a
和 b
中较大的那个。如果 a > b
为真,则 max = a
;否则,max = b
。