在c语言中流程控制分为3种结构,分别是顺序,分支,循环结构,c语言当中任何程序都是由这3种结构组成
注意:c语言中没有bool类型,所以用真1和假0替代
并且运算符的优先级不代表优先执行,而是相当于优先带个括号,运算时还是按照从左向右或者从右向左进行运算,
顺序结构
首先介绍顺序部分
这个很好理解,程序从main函数第一行开始运行,从上到下顺序依次执行
#include <stdio.h>
int main(void)
{
int a = 10;
int b = 20;
int c = a – b;
int a = 15
printf("%d",a);
return 0;
}
看上面的代码c的结果是10,因为在a的值发生改变之前,c已经通过之前的a,b值计算出结果,因为这是顺序结构,不会返回再进行计算,只会顺序依次运行,如下图流程图所示

分支(选择)结构
分支结构,就是根据某个给定的条件进行判断,当执行结果为真1或假0时,分别执行相应的分支(选择)的语句,分为if语句和switch语句
提到对结果进行判断真1和假0,就想到相应的运算符
运算符
关系运算符
这个就不用过多赘述
| < | 小于 |
| > | 大于 |
| <= | 小于等于 |
| >= | 大于等于 |
| == | 判断是否等于 |
| != | 判断是否不等于 |
逻辑运算符
逻辑运算符有逻辑与,逻辑或和非
| && | 逻辑与:一假为假,一真为真(乘法关系) |
| || | 逻辑或:一真为真,全假为假(加法关系) |
| ! | 取非:真取非得假,假取非得真 |
这是真码表

&&和||具有截断特性
&&:若左边为假值,便不再执行右边表达式
||:若左边为真值,便不在继续处理左边表达式
注意:优先级&& > ||
三目运算符
即:逻辑表达式 ?表达式1:表达式2
? :
当逻辑表达式结果为真时,执行表达式1,若结果为假时,执行表达式2
注意:有3中运算符的执行顺序的从右向左的其余便是从左向右的
分别是:单目运算符!
三目运算符 ? :
赋值运算符 == 等等
运算符优先级
运算符优先级决定了表达式中运算符的执行顺序
括号()> 单目运算符 > 双目运算符 > 三目运算符 > 赋值运算符 > 逗号
注意:在逻辑运算符中 与> 或
if语句
if语句的执行流程如图下所示

1.简单分支(if _else语句)
if (逻辑表达式) 写逻辑表达式时,将常量在左边,例如:(1 == a)
{ 并且 if 后面必须加逻辑表达式,但是else后面不能有表达式
语句块1; if语句可以单独使用,不加else,但是else语句不可以单独使用
}
else
{
语句块2;
}
2.阶梯分支(即if_else if _else 语句)
if () 如果上面的语句执行,便不会对后面的语句继续进行判断执行
{
}
else if ()
{
}
else
{
}
3.嵌套结构
if ()
{
if ()
{
if ()
{
}
}
}
什么时候用if语句呢
1.进行逻辑判断时
2.同一类数据进行不同操作时
switch语句
1.简单分支

注意事项:
1.switch后面表达式必须是整型表达式,不能为浮点型
2.case 后面的值,必须为常量,不能是变量表达式,不能是常量表达式
3.switch,只与case后的值比较一次,然后顺序向下执行
2.嵌套结构
里层switch结束后使用break跳出外层switch,如果没有break,外层switch会顺序向下
执行。
循环结构
C语言提供了三种主要的循环结构:for循环、while循环和do-while循环
循环结构的用处:
1.处理有规律的代码
2.重复执行一段代码
for循环
for循环通常用于已知循环次数的情况,其语法如下:
基本结构
for (初始化表达式; 条件表达式; 更新表达式)
{
// 循环体
}
初始化表达式在循环开始前执行一次,条件表达式在每次迭代前检查,更新表达式在每次迭代后执行
初始化表达式:变量在循环中的初始值
条件表达式:循环条件满足条件执行,不满足条件则循环结束
更新表达式:每次循环完毕要执行的代码
嵌套结构
循环可以嵌套使用,即在一个循环体内包含另一个循环。示例:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("i=%d, j=%d\\n", i, j);
}
}
注意:有一个特点,外层执行一次,内层执行一遍(可以根据此特性确定代码中变量在嵌套循环中的位置)
while循环
基本格式
while循环在条件为真时重复执行循环体
while (条件表达式) {
// 循环体
}
do while循环
do-while循环与while循环类似,但循环体至少执行一次
do {
// 循环体
} while (条件表达式);
注意:循环中的内容先执行一次再进行,在进行判断,所以不能跟while,for进行替换
死循环
while格式
do {
// 循环体
} while (条件表达式);
for结构
for( ; ; )
{
循环体
}
goto语句
Goto语句是一种无条件跳转指令,允许程序直接跳转到代码中的指定标签位置执行。它打破了结构化编程的顺序流程。
Goto语句的典型用途
if (error_occurred) {
goto cleanup;
}
cleanup:
free(resources);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (condition) goto exit_loops;
}
}
exit_loops:
Goto语句的争议与风险
辅助控制语句
辅助控制语句是编程中用于改变程序执行流程的语句,通常与主控制结构(如条件、循环)配合使用,增强程序的灵活性和效率。常见的辅助控制语句包括 break、continue、return 等
break 语句
break 用于立即终止当前循环(for 或 while),跳出循环体并执行后续代码。
for i in range(5):
if i == 3:
break # 当 i=3 时终止循环
print(i)
# 输出:0 1 2
continue 语句
continue 跳过当前循环的剩余部分,直接进入下一次迭代。
for i in range(5):
if i == 2:
continue # 跳过 i=2 的本次循环
print(i)
# 输出:0 1 3 4
return 语句
return 用于函数中,终止函数执行并返回指定值。若无返回值,函数返回 None。
def check_even(num):
if num % 2 == 0:
return True
return False
print(check_even(4)) # 输出:True
典型应用场景
- break:搜索满足条件后提前退出循环。
- continue:过滤不符合条件的迭代项。
- return:根据条件提前返回函数结果。
通过合理使用辅助控制语句,可以优化代码逻辑并提升执行效率。
GDB调试工具
GDB(GNU Debugger)是Linux下的命令行调试工具,用于分析程序运行时的行为,定位崩溃、死锁或逻辑错误。
1.编译代码时,允许GDB调试
gcc filename.c -g
2.使用GDB调试代码
gdb a.out
3.使用指令去调试代码
1. l 查看代码
2. b 行号/函数名 设置断点
3. r 执行代码
4. n 单步执行
5. p 变量 查看变量中的值
6. q 退出调试
7. c 运行到下一处断点




