在 C 语言标准中,语句(statements)通常分为几大类,每一类都有特定的功能和语法结构。

以下是本人对 C 语言的分类方法。

1. 表达式语句(Expression Statements)

由表达式单独表示的语句,通常有赋值操作语句、函数调用语句和自增自减操作语句。

语法结构:expression;

例如:

1
2
3
a = a + 1; // 赋值操作语句
printf("Hello, world!"); // 函数调用语句
i++; // 自增操作语句

2. 声明语句(Declaration Statements)

声明语句用于声明变量或函数。

语法结构:type-specifier variable-list [= expression];

例如:

1
2
3
int a; // 声明一个整型变量 a,初始值为 0
int b = 10; // 声明一个整型变量 b,初始值为 10
int c = a + b; // 声明一个整型变量 c,初始值为 a + b

3. 复合语句(Compound Statements)

由多个语句组成的语句,通常是一些需要复合语句的其它语句使用。

语法结构:{ statement-list }

例如:

1
2
3
4
5
6
{
int a = 10;
int b = 20;
int c = a + b;
printf("The sum of %d and %d is %d", a, b, c);
} // 这是一个由4条语句组成的复合语句

4. 选择语句(Selection Statements)

根据条件选择执行路径,包括ifif-elseswitch语句。

语法结构:

  • if 语句if (expression) statement;

  • if-else 语句if (expression) statement1 else statement2;

  • switch 语句switch (expression) { case constant-expression : statement; break; ... default : statement; break; }

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (a > b) {
printf("a is greater than b");
} else if (a == b) {
printf("a is equal to b");
} else {
printf("b is greater than a");
} // 这是一个 if-else 语句

switch (sex){
case 'M':
printf("Male");
break;
case 'F':
printf("Female");
break;
default:
printf("Unknown");
break;
}// 这是一个 switch 语句

5. 循环语句(Loop Statements)

根据条件重复执行语句,包括whiledo-whilefor语句。

语法结构:

  • while 语句while (expression) statement;

  • do-while 语句do statement while (expression);

  • for 语句for (initialization; condition; iteration) statement;

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
while (i < 10) {
printf("%d ", i);
i++;
} // 这是一个 while 语句

do {
printf("%d ", i);
i++;
} while (i < 10); // 这是一个 do-while 语句

for (i = 0; i < 10; i++) {
printf("%d ", i);
} // 这是一个 for 语句

6. 跳转语句(Jump Statements)

用于控制程序的执行流程,包括gotocontinuebreakreturn语句。

语法结构:

  • goto 语句goto label;

  • continue 语句continue;

  • break 语句break;

  • return 语句return expression;

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
goto end; // 这是一个 goto 语句

for (i = 0; i < 10; i++) {
if (i == 5) {
continue; // 这是一个 continue 语句
}
printf("%d ", i);
if (i == 8) {
break; // 这是一个 break 语句
}
}

int sum(int a, int b) {
return a + b; // 这是一个 return 语句
}

7. 空语句(Empty Statement)

空语句是指不做任何事情的语句,通常用于分隔语句。

语法结构:;

例如:

1
; // 这是一个空语句

8. 标签语句(Labeled Statement)

用于标识语句块,可以用于goto语句。

语法结构:label: statement;

例如:

1
2
3
4
5
start:
printf("Start of the program");
goto end;
end:
printf("End of the program");

9. 预处理语句(Preprocessor Statements)

用于控制编译器的行为,包括#include#define#undef#if#else#elif#endif#error#pragma语句。

语法结构:

  • #include 语句#include "filename.h"

  • #define 语句#define macro replacement-list

  • #undef 语句#undef macro

  • #if 语句#if expression

  • #else 语句#else

  • #elif 语句#elif expression

  • #endif 语句#endif

  • #error 语句#error "message"

  • #pragma 语句#pragma directive

例如:

1
2
3
4
5
6
7
#include <stdio.h>
#define PI 3.14159

int main() {
printf("The value of PI is %f", PI);
return 0;
}