控制流

语句与程序块

x=0i++printf(...)这样的表达式之后加上分号;,就变成语句。

用一对花括号{ }把一组声明和语句括在一起就构成了一个复合语句(程序块)。

if-else

if(condition) {
}

if(condition) {
} else {
}

if(condition1) {
} else if(condition2) {
}...
1
2
3
4
5
6
7
8
9
10

在C语言中,0表示假,非0表示真

switch

switch多路判定语句:

switch(表达式) {
	case 常量表达式: 语句序列
		break;
	case 常量表达式: 语句序列
		break;
	default: 语句序列
}
1
2
3
4
5
6
7

break:每个case分支的break是可选的。从与表达式的值相等的case分支开始执行,若无break,会不再进行条件判断而继续执行后面的case分支,直到遇到break或switch执行完毕。

default:此部分可以省略。

可作为switch的表达式的类型有:char、整型、枚举。像浮点数、对象等都不能用于switch语句。

while

while(condition) {
	语句
}
1
2
3

for

for(初始化的赋值表达式; 条件判断的关系表达式; 步长修改的赋值表达式) {
	语句
}
1
2
3

三个表达式都可以省略,但分号必须保留。

do-while

do {
	语句
}while(condition);
1
2
3

先执行后判定,当condition为真时再次执行,若为假则停止。此控制流至少执行一次。

break和continue

break:可使程序从switch语句或最内层循环中退出。

continue:只用于循环语句,直接开始下一次循环的执行。

goto

goto可使程序跳转到指定标号的位置。

常用于因某些错误参数导致程序无法继续执行,进而跳转到错误标号,处理一些资源释放和结束操作。

void func(int num) {
	if(num < 0) {
		goto error; // 因传参不符,直接跳到error位置结束此函数。
	}
	// 正常操作
error:
	// 释放资源
}
1
2
3
4
5
6
7
8