1. 空语句:只含有一个单独的分号。当循环的全部工作在条件部分就可完成时,就会用到空语句。
2. 使用空语句时,应加上注释,且多余的空语句并非总是无害的。
3. 复合语句是指用花括号括起来的语句和声明的序列,其又称作块(block);块并不以分号作为结束。
4. case关键字和它对应的值一起称为case标签。case标签必须是整型常量表达式。
<span style="font-size:18px;">示例
//输入字符,统计每个元音字符的个数
unsigned aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;
char ch;
while (cin >> ch)
{
//switch语句首先对括号里的表达式求值,表达式的
//值转换成整数类型,然后与每个case标签的值比较。
switch (ch)
{
//如果ch是元音字母,将其对应的计数值加1
case 'a':
++aCnt;
break;//中断当前控制流,跳出switch语句外面
case 'e':
++eCnt;
break;
case 'i':
++iCnt;
break;
case 'o':
++oCnt;
break;
case 'u':
++uCnt;
break;
//若switch结构以一个空default标签结束,该default标签后必须跟上一条空语句或空块。
default:
break;
}
}
//求取所有元音字母的总个数
unsigned vowelCnt = 0;
char ch1;
while (cin >> ch1)
{
switch (ch1)
{
//出现了元音字母中的任何一个都会将vowelCnt的值加1
//一般不要省略case分支后的break语句,如若省略,就注释清楚程序的逻辑
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
++vowelCnt;
break;
default:
break;
}
}</span>
5. 范围for语句可遍历容器或其他序列的所有元素。
<span style="font-size:18px;">示例
vector<int> v = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//v必须是一个序列,如用花括号括起来的初始值列表、数组或是vector、string等类型的对象。
//r定义一个变量,序列中每个元素都能转换成该变量的类型,最好使用auto类型说明符。
for (auto &r : v)
{
r *= 2; //r为v中元素的引用,将v中的每个元素的值翻倍
}</span>
6. break语句负责终止离它最近的while、do while、for或switch语句,并从这些语句后的下一条语句开始继续执行。
continue语句终止最近的循环中的当前迭代并立即执行下一次迭代。
goto语句作用是从goto语句无条件跳转到同一函数内的另一条语句(做好不要在程序中使用,它会使程序既难理解又难修改)。
<span style="font-size:18px;">示例
//goto label
//label是用于标记一条语句的标示符
//带标签语句,在其之前有一个标识符以及一个冒号
goto end;
end:
ix = 42;</span>
7. 异常处理机制:
- throw表达式,异常检测部分使用throw表达式来表示它遇到了无法处理的问题。称throw引发(raise)了异常。
- try语句块,异常处理部分使用try语句块处理异常。一关键字try开始,以一个或多个catch子句结束。try语句块中代码抛出的异常通常会被某个catch字句处理。
- 一套异常类(exception class),用于在throw表达式和相关的catch字句之间传递异常的具体信息。