前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第5章 语句

第5章 语句

作者头像
用户1653704
发布2018-06-07 14:18:34
5700
发布2018-06-07 14:18:34
举报

第5章 语句


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

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

代码语言:javascript
复制
do {
    int ival = get_response();
} while (ival);  // 错误,此时 ival未定义!
  1. 异常检测。在实际编程中经常会需要处理意外情况,使用普通的 if-else语句可以处理这种情况,但是此时异常检测和异常处理这两部分的代码将会耦合在一起,不利于功能块的划分和单独实现。使用 try语句块和 catch子句可以很好地将异常的检测和处理分开,并且对于异常发生时内存的回收也能很好的处理。
  2. 寻找匹配的 catch子句的过程与函数调用链刚好相反。首先在抛出异常的函数中寻找匹配的 catch子句,找到的话就继续执行 catch子句后本函数的相关内容;没有找到则在调用该函数的新函数中继续寻找,以此类推。如果最后还是没有找到匹配的 catch子句,则调用 terminate函数终止程序。
  3. 异常发生时,简单的程序通常终止程序就可以了。但是在大型应用中,却需要处理异常并继续执行程序,此时就需要加倍注意了。必须清楚异常发生后仍需要使用的对象此时是否有效、不需要的对象是否已经删除、资源有无泄漏等情况。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档