基于小白保护原则,我们先简单介绍一下它们的基本使用格式;可以根据目录直接寻找自己需要的内容部分~
if-else
参考代码
例如我们需要一段代码来判断输入是a,b或c,输入一个字符 x(必是 a,b,c 之一)。输出
输入 a 则输出 It is good,输入 b 则输出 OMG, 输入 c 则输出 Yes!
这就很适合用if-else分支语句
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char ch;
scanf("%c",&ch);
if(ch=='a')
{
printf("It is good");
}
else if(ch=='b')
{
printf("OMG");
}
else
{
printf("Yes!");
}
return 0;
}
适用情况
1. 条件判断:根据某个条件的真假来执行不同的操作。例如,如果条件为真,则执行一组代码,否则执行另一组代码。
2. 分支控制:根据不同的情况选择不同的路径。通过使用多个 if-else 嵌套,可以实现更复杂的分支逻辑。
3. 错误处理:当程序中出现错误或异常情况时,可以使用 if-else 来进行错误检查和相应的处理。
4. 数据分类:根据数据的不同特征或值,将其分类并执行相应的操作。
5. 逻辑控制:在一些逻辑较为复杂的场景中,使用 if-else 可以清晰地表达和实现逻辑流程。1. 条件判断:根据某个条件的真假来执行不同的操作。例如,如果条件为真,则执行一组代码,否则执行另一组代码。
switch-case
参考代码
在上述示例中,根据变量 day 的值,使用 switch case 语句输出对应的星期几。每个 case 分支对应一个特定的数值,当匹配到相应的 case 时,执行相应的代码
#include <stdio.h>
int main() {
int day = 3;
switch (day) {
case 1:
printf("It's Monday\n");
break;
case 2:
printf("It's Tuesday\n");
break;
case 3:
printf("It's Wednesday\n");
break;
case 4:
printf("It's Thursday\n");
break;
case 5:
printf("It's Friday\n");
break;
case 6:
printf("It's Saturday\n");
break;
case 7:
printf("It's Sunday\n");
break;
default:
printf("Invalid day\n");
break;
}
return 0;
}
适用情况
1. 多分支选择:当需要根据一个变量或表达式的值来执行多个不同的分支操作时, switch case 比使用多个 if-else 语句更加清晰和简洁。
2. 离散值匹配: switch case 适合处理具有离散值的情况,例如枚举类型、常量或特定的数值范围。
3. 多种情况处理:如果有多个不同的情况需要处理,并且每个情况都有独特的操作,使用 switch case 可以更好地组织和管理代码。
4. 可读性和可维护性:相比于嵌套的 if-else 结构, switch case 使得代码更易于阅读和理解,尤其是在处理大量不同情况时。
5. 代码效率:在某些情况下, switch case 的执行效率可能比多个连续的 if-else 语句更高,因为它可以通过跳转表实现快速的分支跳转。
需要注意的是, switch case 语句中的 case 后面的值必须是常量,并且通常是整数类型。每个 case 分支结尾需要使用 break 语句来防止默认的穿透行为。如果需要处理连续的数值范围,可以使用多个连续的 case 语句。
对比
if-else 语句是一种非常常用和灵活的控制结构,适用于各种需要根据条件进行分支处理的情况。它可以帮助程序员编写更智能、灵活和可维护的代码。具体的使用场景取决于具体的编程需求和问题的逻辑
switch case 语句在处理多分支情况时可以提供一种结构清晰、易于维护的方式,但在某些复杂的逻辑或需要更灵活的条件判断时,可能仍然需要使用 if-else 语句。选择使用哪种方式应该根据具体的需求和代码结构来决定。
总的来说:
只有在 case 中的条件是连续数字或相隔不大时,编译器会使用表结构做优化,性能优于 if-else。
其他情况下,switch-case 其实就是逐个分支判断,性能与 if-else 无异。
switch-case 中的 case 只能是常量,而 if-else 用途更广一些,本文仅讨论分支是常量的情况。