C语言if else语句的正确格式是怎样的?

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

if-else 语句是 C 语言中最基础、最核心的条件判断语句,它允许程序根据不同的条件执行不同的代码块。

基本格式

if-else 语句主要有三种格式:

  1. if 语句(单分支)
  2. if-else 语句(双分支)
  3. if-else if-else 语句(多分支)

if 语句(单分支)

当条件满足时执行一段代码,如果条件不满足,则什么都不做。

格式

if (表达式) {
    // 如果表达式为真,则执行这里的代码
    statement1;
    statement2;
    // ...
}

工作原理

  1. 程序首先计算 表达式 的值。
  2. 如果表达式的值为非零(在 C 语言中,非零即代表“真” true),则执行 if 代码块(花括号 )中的语句。
  3. 如果表达式的值为(在 C 语言中,零即代表“假” false),则直接跳过 if 代码块,执行 if 语句后面的其他代码。

示例

#include <stdio.h>
int main() {
    int age = 18;
    if (age >= 18) {
        printf("你已经成年了,\n");
    }
    printf("程序结束,\n");
    return 0;
}

输出:

你已经成年了。
程序结束。

age 被赋值为 16if 代码块内的 printf 语句就不会被执行,程序只会输出 "程序结束。"。


if-else 语句(双分支)

当条件满足时执行一段代码,否则执行另一段代码,这提供了两个互斥的分支。

格式

if (表达式) {
    // 如果表达式为真,则执行这里的代码
    statement1;
} else {
    // 如果表达式为假,则执行这里的代码
    statement2;
}

工作原理

  1. 程序计算 表达式 的值。
  2. 如果为(非零),执行 if 代码块。
  3. 如果为(零),执行 else 代码块。
  4. 注意ifelse 的代码块只会执行其中一个

示例

#include <stdio.h>
int main() {
    int score = 85;
    if (score >= 60) {
        printf("恭喜你,及格了!\n");
    } else {
        printf("很遗憾,你需要补考,\n");
    }
    return 0;
}

输出:

恭喜你,及格了!

score 被赋值为 50,那么输出将是:

很遗憾,你需要补考。

if-else if-else 语句(多分支)

用于处理多个互斥的条件,程序会从上到下依次判断,直到第一个满足条件的分支被执行,然后跳过所有后续的 else ifelse 分支。

格式

if (表达式1) {
    // 如果表达式1为真,则执行这里的代码
    statement1;
} else if (表达式2) {
    // 如果表达式1为假,且表达式2为真,则执行这里的代码
    statement2;
} else if (表达式3) {
    // 如果表达式1和2都为假,且表达式3为真,则执行这里的代码
    statement3;
} else {
    // 如果所有上面的表达式都为假,则执行这里的代码
    statementN;
}

工作原理

  1. 程序从 if (表达式1) 开始判断。
  2. 表达式1 为真,执行 statement1,然后整个 if-else if-else 结构执行完毕。
  3. 表达式1 为假,继续判断 else if (表达式2)
  4. 表达式2 为真,执行 statement2,然后整个结构执行完毕。
  5. ... 以此类推。
  6. 如果所有 ifelse if 的表达式都为假,则执行最后的 else 代码块。

示例

#include <stdio.h>
int main() {
    int score = 75;
    if (score >= 90) {
        printf("成绩优秀!\n");
    } else if (score >= 80) {
        printf("成绩良好!\n");
    } else if (score >= 60) {
        printf("成绩及格,\n");
    } else {
        printf("成绩不及格,\n");
    }
    return 0;
}

输出:

成绩及格。

程序检查 score >= 90 (假),score >= 80 (假),score >= 60 (真),所以执行了第三个分支的代码。


重要注意事项

  1. 表达式必须放在括号 中 ifelse if 后面的条件必须用一对圆括号括起来,这是语法要求。

    if (x > 10) // 正确
    // if x > 10  // 错误!
  2. 代码块(花括号 )的使用

    • 推荐始终使用花括号 ,即使代码块内只有一条语句,这可以增强代码的可读性,并防止在后续添加新语句时出现逻辑错误(著名的 "dangling else" 问题)。
    • 如果代码块内只有一条语句,可以省略花括号,但不推荐
    // 推荐写法(清晰、安全)
    if (age >= 18) {
        printf("成年\n");
    }
    // 不推荐但可接受的写法
    if (age >= 18)
        printf("成年\n");
    // 危险的写法!
    if (age >= 18)
        printf("成年\n");
        printf("可以投票\n"); // 这行代码无论条件真假都会执行!
  3. ifelse 的配对规则 else 总是与其最近的、尚未配对的 if 语句配对。

    if (x > 10)
        if (y > 20)
            printf("A\n");
        else // 这个 else 属于哪个 if?是内层的 if (y > 20)
            printf("B\n");

    x 是 15,y 是 10,程序会输出 "B",这通常不是我们想要的结果,为了清晰,应该使用花括号:

    if (x > 10) {
        if (y > 20) {
            printf("A\n");
        } else {
            printf("B\n");
        }
    }
  4. 表达式的值为 0 或非零 在 C 语言中,任何表达式都可以作为条件,整数、浮点数、指针都可以。

    • 0 代表假。
    • 任何非零值(包括负数、1、2.5、非空指针)都代表真。
    int a = 0;
    if (a) { // 条件为假,不执行
        printf("a is true\n");
    }
    int b = -5;
    if (b) { // 条件为真,执行
        printf("b is true\n"); // 会输出
    }
    int *p = NULL;
    if (p) { // 条件为假,不执行
        printf("p is true\n");
    }
  5. else if 的数量没有限制 你可以根据需要编写任意数量的 else if 分支来处理各种情况。

格式 描述 示例
if 单分支,条件为真时执行 if (age > 18) { ... }
if-else 双分支,条件为真执行 if,否则执行 else if (score >= 60) { ... } else { ... }
if-else if-else 多分支,从上到下判断,执行第一个为真的分支 if (x > 0) { ... } else if (x < 0) { ... } else { ... }

掌握 if-else 语句是编写逻辑清晰、功能完善的 C 语言程序的基础,记住多用花括号注意配对规则,可以避免很多常见的错误。

-- 展开阅读全文 --
头像
织梦后台为何中文不显示?
« 上一篇 今天
如何在C语言中嵌入ARM汇编指令?
下一篇 » 今天

相关文章

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

目录[+]