1、switch表达式必须产生一个整数结果,case标号必须是整型常量表达式。如果两个case标号具有相同的值,同样也会导致编译时的错误。

case 3.14:    // 不是整型

case iVal:    // 不是常量

2、对于switch结构,只能在它的最后一个case标号或default标号后面定义变量。制定这个规则是为了避免出现代码跳过变量的定义和初始化的情况。

3、在循环条件中定义的变量在每次循环里都要经历创建和撤销的过程。

4、可以在for语句的init-statement中定义多个对象;但是不管怎么样,该处只能出现一个语句,因此所有的对象必须具有相同的一般类型。

5、goto语句不能跨越变量的定义语句向前跳转;如果确实需要在goto和其跳转对应的标号之间定义变量,则定义必须放在一个块语句中。

6、与其他块语句一样,try块引入局部作用域,在try块中声明的变量,包括catch子句中声明的变量,不能在try外面引用。

7、可使用NDEBUG预处理变量实现有条件的调试代码:

#ifndef NDEBUG

// Error

#endif

8、预处理器还定义了其余四种在调试时非常有用的常量:

__FILE__    // 文件名

__LINE__    // 当前行号

__DATE__    // 文件被编译的日期

__TIME__    // 文件被编译的时间

9、与异常不同(异常用于处理程序执行时预期要发生的错误),程序员使用assert来测试“不可能发生”的条件。