3.2 if-else 语句

首先,提出一个问题,我们为什么需要,这些控制流语句?从生活出发,记得编写程序是为了解决生活中的问题的。

生活中的问题,其流程大致可以抽象为三种:

具体不再举例,尝试找到生活中的例子去理解即可。

注意这里的词 decisions 生活中我们会遇到很多根据 xx 条件去做 xx 事情的情况,而 decisions 就是根据条件去做的事情,可以看成是这里的 statement。

3.2.1 too-deeply.c
#include <stdio.h>

// 用来判断输入数的值,就是 正数、零、负数

int main() {
    int number;

    // 提示用户输入一个整数
    printf("请输入一个整数: ");
    scanf("%d", &number);

    // 使用if语句检查输入的数是否为正数、负数或零
    if (number > 0) {
        printf("这是一个正数。\n");
    } else if (number < 0) {
        printf("这是一个负数。\n");
    } else {
        printf("这是零。\n");
    }

    return 0;
}

输出是:这是一个负数。why?

这里就遇到一个 代码风格的问题:Misleading indentation: statement is indented too deeply

表示你的代码中的某一行或某一部分代码被缩进得太深,可能会导致可读性不佳或混淆。编译器或代码编辑器通常会发出这个警告,以提醒你可能有问题的代码结构。

这个警告通常与条件语句,例如 ifelse ifelse 等相关。它可能发生在你的代码块缩进太多层次时。

解决此问题的方法是检查你的代码,确保缩进层次不会深于你的编码风格所允许的程度。通常,标准的代码缩进约定是使用4个空格或者1个制表符作为一个缩进级别,然后每个条件语句或代码块都递增一个级别。

if (condition1) {
    // 合适的缩进级别
    if (condition2) {
        // 合适的缩进级别
    } else {
        // 合适的缩进级别
    }
} else if (condition3) {
    // 合适的缩进级别
} else {
    // 合适的缩进级别
}

注意⚠️: else 会和离的最近的 if 进行匹配

但是,放到花括号里就不一样了。else 会和第一个 if 进行匹配

ok 现在我们编写一个实用的用于判断奇数还是偶数的例子:

3.2.2 odd-or-even.c
// 判断一个数是否为奇数
// 核心逻辑在:num % 2 == 1   除以2的余数是否为1
#include <stdio.h>
int main(void) 
{


    int num;
    printf("请输入一个整数:");
    scanf("%d", &num);
    if (num % 2 == 1)
        printf("%d是奇数\n", num);
    else
        printf("%d是偶数\n", num);
    return 0;
}

随机测试两个数

OUT:


请输入一个整数:123456
123456是偶数

Last updated

Was this helpful?