(1) 语句概念
语句(statement)是C++程序运行的最小独立单元,一般由分号(;)结束。可分为简单语句和复合语句。
简单语句(simple statement)一般仅占用一行。由于屏幕显示大小原因,也可以在不影响语义的情况下换行占用多行。空语句、声明语句、赋值语句、表达式语句等均属于简单语句,如:
; //空语句
int nValue = 123; //声明语句
nValue = 123 + 456; //赋值语句
++nValue; //表达式语句
char szValue[10] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; //多行语句
复合语句(compound statement)是由一对大括号包括的语句序列,大括号里包含的语句既可以是一个或多个简单语句,也可以是复合语句。如:
if (nValue > 100)
{
++nCount;
if (nCount > 0)
{
nCount = 0;
}
nValue = 100;
}
如果大括号内仅包含一个简单语句或复合语句,该大括号也可以删除。如:
if (nCount > 0)
nCount = 0;
常用的复合语句是条件语句和循环语句。
(2) 条件语句
条件语句是根据判断条件的结果,选择执行一个语句块。主要有两种条件语句:if语句和switch语句。
if语句的语法形式如下:
if (条件)
{
语句块1
}
else
{
语句块2
}
表达含义为:如果“条件”结果为真,则执行“语句块1”;如果“条件”结果不为真,则执行“语句块2”。该语句有两个关键字if和else,其中else是可选项。
可参见STL库文件“istream”里如下代码的用法:
switch语句的语法形式如下:
switch (表达式)
{
case 值1:
语句块1
break;
case 值2:
语句块2
break;
default:
语句块0
break;
}
表达含义为:如果“表达式”的值为“值1”,则执行“语句块1”;如果“表达式”的值为“值2”,则执行“语句块2”;如果“表达式”的值为其它值,均执行“语句块0”。该语句有四个关键字switch、case、default和break。case的个数是可选的。其中else是可选项。
可参见MFC库文件“wincore.cpp”里如下代码的用法:
case语句的“值”必须为简单常量,且不可以为字符串、浮点数等。故switch语句主要用于对一个简单集合做条件判断。如整数集合、字母集合、枚举集合等。
从语义上讲,所有的switch语句均可以改写为嵌套if-else语句的形式。但逻辑上,switch语句更易于理解。
(3) 循环语句
循环语句是在循环条件为真时,重复执行一个语句块,直至循环条件不为真终止。主要有三种条件语句:for语句、while语句和do while语句。
该部分内容细节较多,下一个学习目标再展开描述。
(4) 实用说明
- 尽量避免一行代码包含多个简单语句。
- 复合语句里即使仅包含一个简单语句,其大括号也不应该删除。这样包含的语句块边界比较清晰明确。这是大多商业企业的编码规范要求。
- 条件语句应优先使用正逻辑,即:
if (条件)
{ 语句块1 }
else
{ 语句块2 }
尽量不使用反逻辑,即:
if (!条件)
{ 语句块2 }
else
{ 语句块1 }
- if语句嵌套层数不宜过多,会增加复杂度,难于测试。
- switch语句应保证必须有default语句块,防止使用不当。
学习目标“最简单实用的语句和条件语句介绍”已完成[再见]