【C语言基础】程序运行结构之选择结构

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处

在这里插入图片描述

引言

C/C++支持最基本的程序运行结构有哪些?

顺序结构、选择结构、循环结构。

🌞顺序结构:

程序按照顺序进行,不发生跳转。按照事物本身特性,必须一个接着一个执行,不需要判断。

🌞选择结构:

又称为分支结构,依据条件是否满足,有选择的执行相应功能。会根据一次判断结果决定之后走哪一个分支。而C语言中选择结构的种类:1.if else 2.switch case

🌞循环结构:

依据条件是否满足,循环执行相应功能。循环结构有一个循环体,循环体是一段代码。

总结:顺序结构不需要判断,而选择和循环结构都要判断,然后根据判断结构来决定执行语句。顺序结构是循环结构和选择结构的基础。

一、if条件语句的选择结构

if条件语句种类:
🧩1、单行格式if语句
🧩2、多行格式if语句
🧩3、多条件格式if语句
🧩4、嵌套if语句

1.1单行格式if语句

if(条件表达式,bool值)
{
满足条件执行的语句
}

1.2多行格式if语句

if(条件)
{
满足条件执行的语句
} 
else 
{
不满足条件执行的语句
};

1.3多条件的if语句

开头if和结尾的else都只能有一个,但是之间的else if可以有无数个。

if(第一个条件)
{
满足条件执行的语句
} 
else if(第二个条件)
{
满足条件执行的语句
}xN 
else
{
不满足所有条件执行的语句
};

注意:上述如果else if已经将所有情况都涵盖了,那么else可以随便打印出什么内容。但是不能漏掉else。

1.4嵌套if语句

if语句中包含if语句

二、switch的选择结构

2.1 switch的语法

📝语法说明:
switch语句由一个表达式和一系列case标签组成。
在执行switch语句时,首先会计算表达式的值,然后将该值与每个case标签进行比较。
如果表达式的值与某个case标签相匹配,程序将执行与该case标签关联的代码块,然后程序会跳出switch语句。
但如果表达式的值与所有case标签都不匹配,程序将执行default标签(可选),或者直接跳过switch语句。

switch (变量)
{
   case 常数1:
   代码段1;
   break;
   case 常数2:
   代码段2;
   break;
......
   default:
   代码段n;
   break;
}

2.2 switch的执行步骤

🧩步骤1、将变量的值依次对比所有常量;
🧩步骤2、找到匹配的项目后,就去执行该case对应的代码段;
🧩步骤3、最后执行break结束运行。
📢如果没有一个匹配上,则default匹配,然后break退出。
注意:

1.case中必须是常数,而且必须是整型,不能float、字符型
2.一般来说,每个case代码段最后一个必须有break。
3.case之后一般都会有default,语法上允许没有default,但是建议写代码时一定要写。

2.3代码示例

举一个简单的示例,请看下面:

#include <stdio.h>

int main() {
    int num;

    printf("请输入一个数字 (1-3): ");
    scanf("%d", &num);

    switch (num) {
        case 1:
            printf("这是数字 1\n");
            break;
        case 2:
            printf("这是数字 2\n");
            break;
        case 3:
            printf("这是数字 3\n");
            break;
        default:
            printf("无效的数字\n");
            break;
    }
    
    return 0;
}

在这个示例中,用户输入一个数字(1、2或3),然后根据用户输入的数字执行相应的操作。每个数字都对应一个case标签,用于匹配用户的输入。如果用户输入的数字与任何一个case标签匹配,则执行该case标签下的代码块。如果用户输入的数字与任何一个case标签都不匹配,则执行default标签下的代码块,这通常是用于处理错误或无效的输入。

2.4补充swich case

swich case使用过程中容易忘记加break来跳出函数,那就会一直执行所有case
其次
default:
break;
默认的情况可以空着不写,这个意思就是说如果没有匹配的case就会直接跳出程序
当然也可以不写这个

switch有无break的区别

三、三目运算符的选择结构

3.1语法形式

在C语言中,三目运算符也被称为条件运算符(conditional operator),其语法形式如下:

variable = condition ? expression1 : expression2;

其中,condition 是一个条件表达式,如果满足条件,则表达式的值为 expression1,否则表达式的值为 expression2

3.2代码示例

C语言中的三目运算符是一种简洁的选择结构,它可以用来替代简单的if-else语句。

下面是一个例子,演示了三目运算符在选择结构中的使用:

int x = 10;
int y = 20;

int max = (x > y) ? x : y; // 如果x大于y,则max等于x,否则等于y

printf("最大值为:%d\n", max);

在上述示例中,如果 x 大于 y,则 max 的值被设为 x,否则被设为 y。这样就避免了使用if-else语句的繁琐性。需要注意的是,三目运算符适用于简单的选择结构,复杂的条件判断仍然需要使用if-else语句。

条件表示式出现数字在左边的情况

例如:if (1 == UART_PRINT_EN)
这段代码是一个条件判断语句,用于判断 UART_PRINT_EN 是否等于1。在这个条件判断中,使用了 == 操作符进行相等比较。

如果 UART_PRINT_EN 等于1,则条件判断的结果为真,进入 if 语句的代码块中执行相应的操作。

示例代码如下:

if (1 == UART_PRINT_EN) {
    // UART_PRINT_EN 等于 1 的代码逻辑
    // ...
} else {
    // UART_PRINT_EN 不等于 1 的代码逻辑
    // ...
}

注意到这里将常量 1 写在左边,而将变量 UART_PRINT_EN 写在右边,这是一种习惯性的写法,可以避免因为误将 == 写成 = 导致的错误。因为如果写成 if (UART_PRINT_EN == 1),如果不小心写成 if (UART_PRINT_EN = 1)(单个等号),就是将1赋值给了 UART_PRINT_EN,而不是进行相等比较。而将常量写在左边,如 1 == UART_PRINT_EN,如果写成 1 = UART_PRINT_EN,会导致编译错误,从而帮助发现错误。

总结:

🙉if与switch之间的区别?

switch的缺点:括号内的判断只能是整型或是字符型,不可以是一个区间
switch的优点:结构简单,运算速度快,执行效率高

🙉那如何选择if else和switch case?

if else适合对比条件比较复杂,但是分支比较少的情况; switch case适合那种对比条件不复杂,但是分支数很多的情况。
所有的选择结构,其实都可以用if else来实现。但是只有部分才可以使用switch case实现。
一般做法:在适合使用switch case的情况下会优先使用switch case,如果不合适使用switch case,则不得不使用if else。
因为switch case结构相对清晰,容易理解。

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌小超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值