C 控制流
C 判断
1. 判断语句
语句 | 描述 |
---|---|
if 语句 | 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 |
if...else 语句 | 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。 |
嵌套 if 语句 | 您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。 |
switch 语句 | 一个 switch 语句允许测试一个变量等于多个值时的情况。 |
嵌套 switch 语句 | 您可以在一个 switch 语句内使用另一个 switch 语句。 |
简单用法:
- if
…… // 其它语句
if (表达式)
{
…… // 逻辑值为真所执行的语句、程序块
}
…… // 其它语句
- if...else
…… // 其它语句
if (表达式)
{
…… // 表达式的逻辑值为真所执行的语句、程序块
}
else
{
…… // 表达式的逻辑值为假所执行的语句、程序块
}
…… // 其它语句
- switch
…… // 其它语句
switch (表达式)
{
case 常量表达式 1: 语句或程序块;
case 常量表达式 2: 语句或程序块;
……
case 常量表达式 n:语句或程序块;
default: 语句或程序块;
}
…… // 其它语句
- 这里的case后边的常量是匹配switch后边表达式的值。
- case后边必须得是常量。
- 如果所有的case都没有匹配,则执行default的内容。
- default是可选的,如果没有default而且所有的case都不匹配,则switch语句不执行任何操作。
- 一些在switch中不应该有的操作
case4: printf("4\n");break; //编译时不会报错,但是也无法匹配n
case5: printf("4\n");break;
csae:
case 5: extern int a; break; //case语句后面不能定义(声明)
case 6: continue; //continue只能出现 在循环中
case 1.0: break; //不允许
case 1+3: break; //不允许
2. ?:运算符(三目运算符)
三目运算符可以用来代替 if...else 语句。
a ? b : c
如果 a 为真,则计算 b 的值,结果即为整个表达式的值。
如果 a 为假,则计算 c 的值,结果即为整个表达式的值。
C 循环
1. 循环语句
有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。
但是编程语言提供了更为复杂执行路径的多种控制结构,循环语句允许我们多次执行一个语句或语句组。
循环类型 | 描述 |
---|---|
while循环 | 当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。 |
while (condition)
{
//循环体
}
while(i >= 1, --j) // 该语句会以逗号后的j为while的判断条件
循环类型 | 描述 |
---|---|
do...while循环 | 除了它是在循环主体结尾测试条件外,其他与 while 语句类似。 |
do
{
//循环体
}while( condition );
循环类型 | 描述 |
---|---|
for循环 | 多次执行一个语句序列,简化管理循环变量的代码。 |
for (init; condition; increment)
{
//循环体
}
for语句将初始化计数器、循环条件判断、更新计数器三个动作组织到了一起。
- init 是初始化循环的控制变量。
- condition 是循环条件表达式,条件为真则执行循环主体。
- increment 可以更 新循环控制变量。
2. 循环控制语句
控制语句 | 描述 |
---|---|
break语句 | 终止循环或switch语句,程序流将继续执行紧接着循环或switch的下一条语句 |
continue语句 | 告诉一个循环体立刻停止本次循环迭代,重新开始下次循环 |
goto语句 | 将控制转移到被标记的语句。但是不建议在程序中使用 goto语句 |
break:如果使用的是嵌套循环,break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
continue:C 语言中的 continue 语句有点像 break 语句。但它不是强制终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。对于 for 循环,continue 语句执行后自增语句仍然会执行。对于 while 和 do...while 循环,continue 语句重新执行条件判断语句。
3. 无限循环的实现
/* while实现 */
while(1)
{
printf("hello world");
}
/* do while实现 */
do
{
printf("hello world");
}while(1);
/* for实现 */
for(i = 1;;i++)
{
printf("hello world");
}
/* goto实现 */
label:
printf("hello world\n");
goto label;