C语言学习第五天

时间:2024-01-25 15:39:04

一、关系操作符

关系操作符

>
>=
<
<+
!+    用于测试“不相等”
==    用于测试“相等”

二、逻辑操作符

C语言中的&&运算符表示逻辑与(Logical AND)。它用于连接两个布尔表达式或条件,并且只有当这两个表达式都为真(即非零)时,整个表达式的结果才为真。

使用场景

  1. 条件判断: 当你需要同时检查多个条件是否为真时,可以使用&&。例如,检查两个变量的值是否都满足某个特定条件。
int a = 5;
int b = 10;
if (a > 0 && b > 0) {
    // 当a和b都大于0时执行
}
  1. 安全检查: 在进行某些操作之前,你可能需要检查多个条件是否都满足,以确保操作的安全性。例如,在访问数组元素之前,检查索引是否在有效范围内。
int index = 3;
int array[10];
if (index >= 0 && index < 10) {
    // 只有当index在0到9之间时才访问array[index]
    array[index] = 50;
}
  1. 复合条件逻辑: 在需要基于多个条件的复合逻辑来决定程序的执行流程时,&&可以与其他逻辑运算符(如||)结合使用。
int age = 20;
bool hasLicense = true;
if (age >= 18 && hasLicense) {
    // 只有当年龄大于等于18且拥有驾驶执照时才允许驾驶
}

短路特性

在这段代码中,&&运算符用于连接三个表达式:a++++bd++。这些表达式在逻辑与操作中依次进行评估。由于&&是逻辑与运算符,如果它遇到任何为假(即值为0)的表达式,整个表达式的值立即确定为假(0),并且停止评估剩余的表达式。这是所谓的短路行为。

现在,让我们逐步分析这段代码:

  1. i = a++ && ++b && d++;
  • 首先评估a++这是一个后增量运算符,所以它首先返回a的当前值,然后将a的值增加1。因为初始时a为0,所以这个表达式的结果是0(假)。
  • 由于a++的结果是0,&&运算符的短路特性意味着++bd++都不会被执行。整个表达式的结果是0,赋值给i
  1. 打印变量的值。
  • a的值在执行a++后变成了1。
  • bcd的值保持不变,因为++bd++都没有被执行。所以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 会被赋值为 ab 中较大的那个。如果 a > b 为真,则 max = a;否则,max = b