[关闭]
@Moritz 2019-01-21T06:06:07.000000Z 字数 959 阅读 755

关于语句的一些注意事项_Chapter5

C++primer C++ 课程学习 所有文稿


dangling else

在既有if又有if else语句的编程语言中,经常会出现else与不同if匹配可产生歧义的问题,称为悬垂else问题(dangling else)。在C++中,规定else与最近的尚未匹配的if匹配。


switch语句控制流

switch语句中,case关键字和它对应的值一起被称为case标签(case label),且它必须是整型常量表达式。

如果没有任何一个case标签能匹配上switch表达式的值,程序将执行紧跟在default标签(default label)后面的语句。即使不准备在default标签下做任何工作,定义一个default标签也是有用的。其目的在于告诉程序的读者,我们已经考虑到默认的情况,只是目前什么也没做。

标签后面必须跟上一条语句或者另一个case标签。如果以空的default标签结束,则default后必须跟上一条空语句;或者一个空块{}

如果需要为某个case分支定义并初始化一个变量,应该把变量定义在内,从而确保后面的所有case都在变量的作用域之外。C++规定,不允许跨过变量的初始化语句直接跳转到该变量作用域的另一个位置。


范围for语句

C++11新标准引入,可以遍历容器或其他序列的所有元素。

范围for语句语法形式:

  1. for(declaration:expression)
  2. statement

expression表示的必须是一个序列,比如用{}括起来的初始值列表、数组、vectorstring等类型的拥有能返回迭代器的beginend成员的对象

例子:

  1. vector<int> v={1,2,3,4,5,6,7,8,9};
  2. //范围变量必须是引用类型,才能对元素执行写操作
  3. for (auto &r:v) //auto类型说明符确保类型相容
  4. r*=2;

continue语句

for语句语法形式:

  1. for (initializer;condition;expression)
  2. statement

执行continue语句之后,继续执行for语句头的expression

对于范围for语句来说,用序列中的下一个元素初始化循环控制变量。


try语句块和异常处理

还没学 -2019.1.12


完成施工 -2019.1.12

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注