Table of Contents generated with DocToc
空语句常见于循环中,同时,无关的空语句总是无害的。
搞清定义和声明的区别。
块标识了一个作用域,一个名字只能从其定义处到该块的结尾这段范围可见。
更旧式的C++允许在for
语句作用域之外访问控制变量。
else
会匹配给最后出现的尚未匹配的if
子句。
如果switch
中表达式与其中一个case
的值匹配。则执行该标号后面的第一个语句开始依次执行每个语句,直到switch
结束或遇到break
。如果没有发现匹配的case
标号(并且也没有default
),则程序从switch
语句后面的第一条语句继续执行。
有个普遍的误解是以为程序只会执行匹配的case
标号相关联的语句,实际上,程序从该点开始,并跨越case边界继续执行其他语句,直到switch
结束或break
。
case
标号必须是整型常量表达式,如果两个case
有相同的值,会导致编译错误。
对于switch
结构,只能在它的最后一个case
标号或default
后定义变量,避免出现跳过变量的定义和初始化的情况。
在循环条件中定义的变量,每次循环里都要经历创建和撤销的过程。
可以省略for
语句的某些部分,也可以在for
语句头中有多个定义。
do while
语句总以分号结束。
break用来结束最近的while
、do while
、for
或switch
语句。
continue
导致最近的循环语句的当前迭代提前结束。
label
与变量名及其他标识符一样,不能重名。
goto
语句和获得所转移的控制权的标号的语句必须在同一个函数内。
goto
不能跨越变量的定义语句往前跳转,如果goto
和将跳转的标号之间定义变量,则必须放在一个块语句中。(但是在后面的label
中,变量仍不可见)。
goto
向后跳转回到一个变量定义之前,系统会撤销这个变量,重新创建。
如果不存在处理该异常的catch
子句,程序的运行就要跳转到terminate
的标准库函数。
可使用NDEBUG
预处理变量实现有条件的调试代码。
#ifdef NDEBUG
#endif
上一章:[6. 语句](6. 语句.md)
下一章: