语句
简单语句
- 空语句
配合 while 循环使用 - 复合语句
{}包含起来 - 语句作用域
块作用域
条件语句
-
if 语句
嵌套 if 语句以及 else 悬垂的问题都可以利用花括号控制执行路径进行解决,同时方便阅读 -
switch 语句
case 标签必须是整型常量表达式
default 是一种特殊的 case 标签
每条 case 标签结束都理应加上 break 关键字,除非有特殊业务需求
内部的变量定义细节问题
由于 case 分支可能被跳过(变量初始化操作),后续 case 分支有可能使用=被跳过 case 分支中定义的变量,出错
由于不确定 switch 语句中的控制流,所以要在 case 分支中定义变量时,应该使用块作用域
迭代语句
-
while 语句
- 不知道循环多少次
- 循环结束后还需要访问循环控制变量
条件部分变量和循环体内的变量都具有块作用域,每次迭代都经历从创建到销毁
-
传统 for 语句
同样具有块作用域- for 语句头多重定义
变量的基础类型必须相同,例如for(int i = 0, *p = expr; expr; expr)
- 省略 for 语句头中的部分
可以省略任何一部分或者全部,省略条件部分等价于永远为 true
- for 语句头多重定义
-
范围 for 语句
预存 end()的值,因此不能再向容器中添加元素,否认则将导致 end()值无效 -
do-while 语句
需要用分号表示语句结束
条件部分不能定义变量
跳转语句
-
break 语句
负责终止最近的 while、do-while、for 和 switch 语句(没有 if 语句!!!) -
continue 语句
终止最近循环中的本次迭代,开始下一次迭代(for、while、do-while) -
异常处理
- throw 语句
throw 异常类型(字符串) - try 语句
花括号内属于块作用域,catch 也不能访问 - catch 语句
catch 语句括号内跟一个异常类型声明
try 语句之后可能会跟多个 catch,直到 catch 捕捉到对应的异常类型,然后跳过所有 catch 语句向下继续执行
- throw 语句