第十章、其它语句
1. 复合语句
复合语句(Compound statements) 也常被称为代码块,是用一对大括号 {} 将 零条 或 多条语句 括起来所形成的一个整体。
复合语句的语法:
{
语句块列表
}
语句块的语法
声明
语句
语法说明:
- 声明可以是变量声明,也可以是函数声明。声明部分可以省略不写。
- 语句部分可以有一条或多条语句,也可以省略不写。
- C89/C90 的C语言标准规定复合语句的语句块列表内只有一条语句块。即只能在最上面有一个声明。不能在任意位置声明变量。
- C99、C11的C语言标准规定复合语句内可以有多条语句块。即可以在任意位置声明变量。
- 在语法上,C 语言将复合语句视为一条单独的语句。
示例
输入语文成绩和数学成绩,计算并打印两科成绩的和。
#include <stdio.h>
int main(int argc, char *argv[]) {
int total_score = 0;
{ // 这对大括号是复合语句
int score;
printf("请输入语文成绩(0~100):");
scanf("%d", &score);
if (score < 0 || score > 100) { // 这对大括号是复合语句
printf("语文成绩有错\n");
return 1;
}
total_score += score;
}
{ // 这对大括号是复合语句
printf("请输入数学成绩(0~100):");
int score; // C99 及之后版本的编译器才可以在语句后声明变量。
scanf("%d", &score);
if (score < 0 || score > 100) { // 这对大括号是复合语句
printf("数学成绩有错\n");
return 2;
}
total_score += score;
}
printf("您的总成绩是:%d\n", total_score);
return 0;
}
注意:
一个空的复合语句 {} 等同于一条由单个的分号(;)组成的空语句。如下面的示例中。两种写法效果相同。
int x;
for (x = 0; x < 100; x++) {} // {} 是空复合语句
也可以写成
int x;
for (x = 0; x < 100; x++) ; // ; 是空语句
实验
- 随便写一个程序,自己定义一个复合语句,在复合语句内部声明变量,在复合语句后面打印这个变量的值,看是否会报错。