现在的位置: 首页 > 综合 > 正文

2010/11/06

2013年08月15日 ⁄ 综合 ⁄ 共 1383字 ⁄ 字号 评论关闭

2010/11/6

关键字:语句

 

零散知识点

1.      for循环中声明的变量在for循环外是不可见的,但是早期C++编译器还是支持的.VC8不支持,VC6支持.

2.      悬垂else.

if (/**/)

     if (/**/)

     {

     }

else

{

}

else实际是对应内层的if.

else匹配给最后出现的尚未匹配的if字句.

3.      switch…case语句需要break时别忘了break语句即可.通常还是要加default标号,即使后面跟一个空语句也可以,是为了告诉它的读者考虑到了这种情况,虽然没有什么可执行的.case标号必须是整型常量表达式,并且不能重复.

        string str = "123";

    switch (str)        //必须是整型常量表达式

    {

    case "123:

        break;

    case "234:

        break;

}

4.      对于switch语句,不加块语句时只能在它的最后一个casedefault标号后面定义变量;加块语句则任何标号后都可以.

        switch (i)

    {

    case 1:

        {                   //有块语句

            int j = 0;

            j = 1;

        }

        break;

    case 2:

        int z = 0;          //不用加块语句则只能放在最后一个标号

        break;

    }

推荐每个标号后都用{}括号.

5.      while循环条件中定义的变量,每次循环都会创建、初始化、撤销,所以尽量不要在循环条件中定义变量.

6.      不允许使用goto语句.

 

try…catch

匹配catch步骤:

假如,一个try块可能调用包含另一try块的函数,它的try块又调用了含有try块的另一个函数,依次类推.

寻找处理代码的过程与函数调用链相反.抛出一个异常时,首先要搜索的是抛出异常的函数.如果没有找到匹配的catch,则终止这个函数的执行,并在调用这个函数的函数中寻找匹配的catch.如果依然没有找到相应的处理代码,该函数同样终止,搜索调用它的函数.如此类推,继续按执行路径回退,知道找到合适的catch为止.

         如果不存在处理该异常的catch子句,程序的运行将跳转到terminate标准库函数.该函数在exception头文件中定义.这个标准库函数的行为依赖于系统.通常它的执行会导致程序非正常退出.

         没有定义try块和没有任何catch块捕捉到异常的效果是一样的.

 

异常类

描述

头文件

exception

最常见的错误

stdexcept

runtime_error

运行时错误:仅在运行时才能检测到的错误

stdexcept

range_error

运行时错误:生成的结果超出了有意义的值域范围

stdexcept

overflow_error

运行时错误:计算上溢

stdexcept

underflow_error

运行时错误:计算下溢

stdexcept

logic_error

逻辑错误:可在运行前检测到的问题

stdexcept

domain_error

逻辑错误:参数的结果值不存在

stdexcept

invalid_argument

抱歉!评论已关闭.