3.2 if-else 语句
首先,提出一个问题,我们为什么需要,这些控制流语句?从生活出发,记得编写程序是为了解决生活中的问题的。
生活中的问题,其流程大致可以抽象为三种:

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

注意这里的词 decisions 生活中我们会遇到很多根据 xx 条件去做 xx 事情的情况,而 decisions 就是根据条件去做的事情,可以看成是这里的 statement。
#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
表示你的代码中的某一行或某一部分代码被缩进得太深,可能会导致可读性不佳或混淆。编译器或代码编辑器通常会发出这个警告,以提醒你可能有问题的代码结构。
这个警告通常与条件语句,例如 if
、else if
、else
等相关。它可能发生在你的代码块缩进太多层次时。
解决此问题的方法是检查你的代码,确保缩进层次不会深于你的编码风格所允许的程度。通常,标准的代码缩进约定是使用4个空格或者1个制表符作为一个缩进级别,然后每个条件语句或代码块都递增一个级别。
if (condition1) {
// 合适的缩进级别
if (condition2) {
// 合适的缩进级别
} else {
// 合适的缩进级别
}
} else if (condition3) {
// 合适的缩进级别
} else {
// 合适的缩进级别
}
注意⚠️: else 会和离的最近的 if 进行匹配

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

ok 现在我们编写一个实用的用于判断奇数还是偶数的例子:
// 判断一个数是否为奇数
// 核心逻辑在: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?