📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【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结构相对清晰,容易理解。