Condition在C语言中如何使用?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 C语言 正文

在 C 语言中,“条件”是程序做出决策和执行不同代码路径的核心,它通常与 ifelse ifelse 语句以及 switch 语句结合使用,以控制程序的流程。

condition c语言
(图片来源网络,侵删)

条件判断的本质:真与假

在 C 语言中,任何值都可以被用作一个条件,其判断规则非常简单:

  • “真”(True):任何非零的值都被认为是“真”。
    • 1, -10, 14, 5 (非零整数) 都是“真”。
    • 指针(只要不是空指针 NULL)也是“真”。
  • “假”(False):唯一的“假”0
    • 0, 0, '\0' (空字符) 都是“假”。

示例:

#include <stdio.h>
int main() {
    int a = 10;
    int b = 0;
    if (a) { // a 的值是 10 (非零),所以条件为真
        printf("a is true.\n"); // 这行会被执行
    }
    if (b) { // b 的值是 0,所以条件为假
        printf("b is true.\n"); // 这行不会被执行
    }
    if (!b) { // ! 是逻辑非运算符,!0 等于 1 (真)
        printf("b is false.\n"); // 这行会被执行
    }
    return 0;
}

关系运算符

关系运算符用于比较两个值,并返回一个结果(1 代表真,0 代表假),这个结果通常用作 if 语句的条件。

运算符 名称 示例 描述
等于 a == b a 等于 b,结果为 1 (真)
不等于 a != b a 不等于 b,结果为 1 (真)
> 大于 a > b a 大于 b,结果为 1 (真)
< 小于 a < b a 小于 b,结果为 1 (真)
>= 大于或等于 a >= b a 大于或等于 b,结果为 1 (真)
<= 小于或等于 a <= b a 小于或等于 b,结果为 1 (真)

⚠️ 特别注意: (等于) 和 (赋值) 是两个完全不同的运算符,初学者非常容易混淆。

  • if (x == 5):判断 x 的值是否等于 5
  • if (x = 5):将 5 赋值给 x,然后判断 x 的值(此时为 5,非零,所以为真),这通常是一个逻辑错误,但 C 编译器会把它当作合法代码,导致难以发现的 bug。

逻辑运算符

当需要组合多个条件时,可以使用逻辑运算符。

condition c语言
(图片来源网络,侵删)
运算符 名称 示例 描述
&& 逻辑与 condition1 && condition2 :只有当 condition1condition2 都为真时,整个表达式才为真。
逻辑或 condition1 || condition2 :只要 condition1condition2 有一个为真,整个表达式就为真。
逻辑非 !condition condition 为真,则 !condition 为假;反之亦然。

短路求值

C 语言在计算逻辑表达式时采用“短路求值”策略,这可以提高效率并避免潜在错误。

  • 对于 && (与)

    • 如果第一个条件为,整个表达式必然为假,因此不会再去计算第二个条件
    • 示例if (a != 0 && (b / a) > 2)a0,第一个条件 a != 0 为假,程序不会执行 (b / a),从而避免了“除以零”的错误。
  • 对于 (或)

    • 如果第一个条件为,整个表达式必然为真,因此不会再去计算第二个条件
    • 示例if (x > 10 || check_file_exists())x 大于 10,第一个条件为真,程序不会调用 check_file_exists() 函数,节省了时间。

if-else 语句

这是最基本、最常用的条件结构。

condition c语言
(图片来源网络,侵删)

a) if 语句

如果条件为真,则执行代码块。

if (条件) {
    // 如果条件为真,则执行这里的代码
}

b) if-else 语句

如果条件为真,执行 if 代码块;否则,执行 else 代码块。

if (条件) {
    // 如果条件为真,执行这里的代码
} else {
    // 如果条件为假,执行这里的代码
}

c) if-else if-else 语句

用于检查多个互斥的条件,一旦某个条件为真,就执行对应的代码块,并跳过后续的 else ifelse

if (条件1) {
    // 如果条件1为真,执行这里的代码
} else if (条件2) {
    // 如果条件1为假,且条件2为真,执行这里的代码
} else if (条件3) {
    // 如果条件1和条件2都为假,且条件3为真,执行这里的代码
} else {
    // 如果以上所有条件都为假,执行这里的代码
}

完整示例

#include <stdio.h>
int main() {
    int score = 85;
    if (score >= 90) {
        printf("Grade: A\n");
    } else if (score >= 80) {
        printf("Grade: B\n"); // 这行会被执行
    } else if (score >= 70) {
        printf("Grade: C\n");
    } else {
        printf("Grade: F\n");
    }
    return 0;
}

switch 语句

switch 语句用于处理基于单个变量的多个离散值的情况,它通常可以替代复杂的 if-else if-else 结构。

switch (表达式) {
    case 常量1:
        // 如果表达式的值等于 常量1,执行这里的代码
        break; // 跳出 switch
    case 常量2:
        // 如果表达式的值等于 常量2,执行这里的代码
        break;
    default:
        // 如果表达式的值不匹配任何一个 case,执行这里的代码
        break;
}

关键规则:

  1. 表达式类型switch 后的表达式必须是整型int, char, long 等)或枚举类型。
  2. case:每个 case 后的值必须是常量或常量表达式,不能是变量。
  3. break 语句case 分支中没有 break,程序会继续执行下一个 case 的代码,这被称为“贯穿”(fall-through),虽然有时会故意利用它,但初学者最好养成在每个 case 末尾加上 break 的习惯。
  4. default 分支:是可选的,当没有任何 case 匹配时执行。

示例

#include <stdio.h>
int main() {
    char grade = 'B';
    switch (grade) {
        case 'A':
            printf("Excellent!\n");
            break;
        case 'B':
            printf("Good job!\n"); // 这行会被执行
            break;
        case 'C':
            printf("Pass.\n");
            break;
        default:
            printf("Invalid grade.\n");
            break;
    }
    return 0;
}

三目运算符 (?:)

这是一种简洁的条件表达式,可以看作是 if-else 的一行写法。

语法: 条件 ? 表达式1 : 表达式2

执行逻辑: 条件 为真,整个表达式的结果为 表达式1 的值;否则,结果为 表达式2 的值。

示例

#include <stdio.h>
int main() {
    int a = 10;
    int b = 20;
    int max;
    // 使用 if-else
    if (a > b) {
        max = a;
    } else {
        max = b;
    }
    printf("Max (if-else): %d\n", max);
    // 使用三目运算符
    max = (a > b) ? a : b;
    printf("Max (ternary): %d\n", max);
    // 另一个例子:打印消息
    (a > 0) ? printf("a is positive.\n") : printf("a is not positive.\n");
    return 0;
}

特性 描述
判断基础 任何非零值为真,零为假。
关系运算符 , , >, <, >=, <=,用于比较,返回 1 (真) 或 0 (假)。
逻辑运算符 && (与), (或), (非),用于组合条件,支持短路求值
if-else 最灵活的条件结构,可以处理任意复杂的逻辑判断。
switch 适用于基于单个整型变量的多分支选择,结构清晰。
三目运算符 条件 ? 值1 : 值2,是 if-else 的简洁形式,适用于简单的赋值或返回场景。

理解并熟练运用这些条件语句是编写逻辑清晰、功能强大的 C 语言程序的基础。

-- 展开阅读全文 --
头像
dede下载站整套模板哪里有?
« 上一篇 03-01
C语言intrinsic函数究竟有何特殊作用?
下一篇 » 03-01

相关文章

取消
微信二维码
支付宝二维码