一、语句的概念
程序的执行流程是由语句来控制的,执行语句便会产生相应的效果。C++ 中的语句是程序的基本执行单位,以分号结尾(部分语句结构除外)。
二、C++ 语句的分类
C++ 的语句包含以下类别:
- 空语句
- 声明语句
- 表达式语句
- 选择语句
- 循环语句
- 跳转语句
- 复合语句
- 标号语句
三、各类语句说明
1. 空语句
一个独立的分号 ; 就构成一个空语句。空语句不产生任何操作,仅作为语法上需要一条语句但逻辑上不需要执行任何操作时的占位符。
;// 空语句Code language: JavaScript (javascript)
常见使用场景:在循环体中不需要执行任何操作时。
while (*p++ != '\0')
; // 空语句,等待循环条件判断完成Code language: JavaScript (javascript)
2. 声明语句
变量的声明和定义通过声明语句来实现。声明语句引入一个或多个标识符,并可同时进行初始化。
int a = 12; // 声明语句Code language: JavaScript (javascript)
声明语句不仅定义变量,还指定其类型和初始值。在 C++ 中,声明和定义常常同时完成。
3. 表达式语句
在表达式末尾添加分号,便构成一个表达式语句。表达式语句求值后,其结果被舍弃(除非有副作用)。
a += 2; // 表达式语句
(a -= 1, a *= 3); // 逗号表达式构成的表达式语句Code language: JavaScript (javascript)
注意:C++ 没有专门的赋值语句,赋值操作通过赋值表达式实现,加上分号后成为表达式语句。同样,函数调用也没有专门的语句形式,函数调用表达式加分号即构成表达式语句。
func(); // 函数调用表达式语句Code language: JavaScript (javascript)
4. 复合语句
将多个语句用一对大括号 {} 括起来,便构成一个复合语句(也称为块)。复合语句在语法上被视为一条语句,常用于选择语句和循环语句中需要执行多条语句的场合。
{
int temp = a;
a = b;
b = temp;
} // 复合语句Code language: JavaScript (javascript)
复合语句内部可以声明变量,这些变量的作用域仅限于该复合语句内部。
5. 选择语句
选择语句根据条件决定执行哪条分支,包括 if 语句和 switch 语句。将在后续章节详细讲解。
6. 循环语句
循环语句用于重复执行代码块,包括 while、do-while 和 for 语句。将在后续章节详细讲解。
7. 跳转语句
跳转语句用于改变程序的正常执行顺序,包括 break、continue、return 和 goto 语句。将在后续章节详细讲解。
8. 标号语句
标号语句为语句提供一个标识符标签,用于 goto 语句的跳转目标。形式为 标识符: 语句。
label:
cout << "jump here" << endl;Code language: JavaScript (javascript)
四、代码示例
以下代码演示了各类语句的基本用法:
#include <iostream>
using namespace std;
int main()
{
; // 空语句
int a = 12; // 声明语句
a += 2; // 表达式语句
cout << "a after += 2: " << a << endl; // 输出 14
(a -= 1, a *= 3); // 逗号表达式语句
cout << "a after comma expr: " << a << endl; // 输出 39
// 复合语句
{
int b = 5;
a = a + b;
cout << "inside block, a = " << a << endl;
}
// b 在这里不可访问
// 表达式语句(函数调用)
cout << "hello" << endl; // 输出函数调用表达式语句
// 标号语句
goto skip;
cout << "this will not print" << endl;
skip:
cout << "jumped here" << endl;
return 0; // 跳转语句
}Code language: PHP (php)
五、注意事项
- C++ 没有专门的赋值语句和函数调用语句,赋值和函数调用都是通过表达式加分号构成表达式语句来实现的。
- 空语句虽然不产生任何效果,但可能引入逻辑错误。例如在 if 语句后误加分号会导致条件分支为空。
if (a > 0);
cout << "always print"; // 无论 a 是否大于 0 都会执行Code language: JavaScript (javascript)
- 复合语句中声明的变量,其作用域从声明点开始到复合语句结束,外部不可访问。
- 标号语句的标签必须与 goto 配合使用,但 goto 会破坏程序结构,应谨慎使用。
六、小结
- C++ 语句是程序的基本执行单位,以分号结尾(部分结构除外)。
- 语句分为空语句、声明语句、表达式语句、选择语句、循环语句、跳转语句、复合语句和标号语句。
- 空语句仅由分号构成,用于占位。
- 声明语句定义变量并指定类型。
- 表达式加分号构成表达式语句,赋值和函数调用均通过此方式实现。
- 复合语句用 {} 包裹多条语句,在语法上视为一条语句。
- 理解各类语句的构成有助于后续学习控制结构和函数。