1、对于switch结构,只能在它的最后一个case标号或default标号后面定义变量,定制这个规则是为了避免出现代码跳过变量的定义和初始化的情况,如果要为某个特殊的case定义变量,则可以引入块语句,在该块语句中定义变量,从而保证这个变量在使用之前被定义和初始化。
2、简洁即是美,“*dest++ = *source++”就是一个经典的例子,该表达式等价于
{ *dest = *source; ++dest; ++source; }
3、for、while语句头中都可以任何对象,但定义的变量只有在循环体内可见。
4、省略for语句头的条件判断语句,则等效于循环条件永远为真。
5、可以在for语句头的变量初始化语句部分定义多个对象,但是不管怎样,只能出现一个语句,因此所有的对象必须具有相同的一般类型。
6、与while语句不同,do while 语句总是以分号结束。
7、 goto语句提供了函数内部的无条件跳转,实现从goto语句跳转到同一函数内某个带标号的语句。goto语句使跟踪程序控制流程序变得很困难,并且使程序难以理解跟难以修改。所有使用goto的程序都可以改写为不用goto的语句,因此也就没有必要使用goto语句了。
8、在try块中声明的变量,包括catch字句中声明的变量,不能在try外面引用。
9、寻找异常处理代码的过程与与函数调用链刚好相反。抛出一个异常时,首先要搜索的是抛出异常的函数。如果没有找到匹配的catch,则终止这个函数的执行,并在调用这个函数的函数中寻找相配的catch。如果仍然没有找到相应的处理代码,该函数同样要终止,搜索调用它的函数。如此类推,继续按执行路径回退,直到找到适合类型的catch为止。如果不存在处理该异常的catch子句,程序的运行就要跳转到名为terminate的标准库函数,它的执行将导致程序的非正常退出。
10、预处理器常量:
__FILE__ //文件名 __LINE__ //当前行数 __TIME__ //文件被编译的时间 __DATE__ //文件被编译的日期
11、断言assert预处理宏并非函数,只有在NDEBUG未定义的情况下有效,括号内的表达式结果为false时assert输出信息并终止程序的执行。
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。