zoukankan      html  css  js  c++  java
  • 第5章 语句

    第5章 语句


    1. 空语句,只含有一个单独的分号":"。通常用与处理在语法上需要一条语句但逻辑上不需要的情况。使用空语句时应该加上注释,从而令读者意识到该句是有意省略的。
    2. 块,语法上需要一条语句,但逻辑上需要多条语句。
    3. 悬垂 else,if分支多于 else分支,如何确定某个给定的 else语句与哪一个 if匹配?这样的问题称为悬垂 else。C++解决此问题的方式是,规定 else与离它最近的尚未匹配的 if匹配。因此,若想令内存 else与外层 if语句匹配,可以使用花括号 {}来控制执行路径。
    4. switch后的表达式必须是整型常量表达式或能转换成此类型的值。
    5. 为了避免执行后续 case分支的代码,需要加上 break语句。但同样的,如果希望两个或更多的值共享同一操作,也可以故意省略掉 break语句。不过此时最好在注释语句中加以说明。
    6. 如果需要为某个 case分支定义并初始化一个变量,应该把变量定义在块内,从而确保后面的所有 case标签都在变量的作用域之外。
    @autor taqikema
    case true:
        {
            // 正确,声明语句位于语句块内部
            string file_name = get_file_name();
            // ...
        }
        break;
    case false:
        if (file_name.empty())  // 错误:file_name不在作用域之内
    
    1. 范围 for语句,如果需要对序列中的元素执行写操作,循环变量必须声明成引用类型。配合 auto使用,不需要担心元素类型出错和下标越界情形,简单易用。
    vector<int> v = {0, 1, 2, 3};
    for(auto &r : v)
    r *= 2;
    
    1. do while语句
    do {
        statement;
    } while (condition);
    

    注意,在括号围起来的条件后面用一个分号表示语句结束!另外,与循环的条件判断有关的变量不能定义在 do内部,因为定义在 do花括号内部的变量其作用域就只在花括号围起来的代码块中。下面写法就是错误的!

    do {
        int ival = get_response();
    } while (ival);  // 错误,此时 ival未定义!
    
    1. 异常检测。在实际编程中经常会需要处理意外情况,使用普通的 if-else语句可以处理这种情况,但是此时异常检测和异常处理这两部分的代码将会耦合在一起,不利于功能块的划分和单独实现。使用 try语句块和 catch子句可以很好地将异常的检测和处理分开,并且对于异常发生时内存的回收也能很好的处理。
    2. 寻找匹配的 catch子句的过程与函数调用链刚好相反。首先在抛出异常的函数中寻找匹配的 catch子句,找到的话就继续执行 catch子句后本函数的相关内容;没有找到则在调用该函数的新函数中继续寻找,以此类推。如果最后还是没有找到匹配的 catch子句,则调用 terminate函数终止程序。
    3. 异常发生时,简单的程序通常终止程序就可以了。但是在大型应用中,却需要处理异常并继续执行程序,此时就需要加倍注意了。必须清楚异常发生后仍需要使用的对象此时是否有效、不需要的对象是否已经删除、资源有无泄漏等情况。
  • 相关阅读:
    jdk版本切换
    Java开发中遇到的问题
    递归删除文件夹
    重写equals方法
    JSP基础
    js把变量转换成json数据
    myBatista批量查询和插入
    Jquery密码强度校验
    Linux配置外网访问mysql
    linux下开启、关闭、重启mysql服务命令
  • 原文地址:https://www.cnblogs.com/taqikema/p/8157627.html
Copyright © 2011-2022 走看看