@Moritz
2019-01-21T06:06:07.000000Z
字数 959
阅读 755
C++primer
C++
课程学习
所有文稿
在既有if
又有if else
语句的编程语言中,经常会出现else
与不同if
匹配可产生歧义的问题,称为悬垂else
问题(dangling else
)。在C++中,规定else
与最近的尚未匹配的if
匹配。
switch
语句中,case
关键字和它对应的值一起被称为case
标签(case label
),且它必须是整型常量表达式。
如果没有任何一个case
标签能匹配上switch
表达式的值,程序将执行紧跟在default
标签(default label
)后面的语句。即使不准备在default
标签下做任何工作,定义一个default
标签也是有用的。其目的在于告诉程序的读者,我们已经考虑到默认的情况,只是目前什么也没做。
标签后面必须跟上一条语句或者另一个case
标签。如果以空的default
标签结束,则default
后必须跟上一条空语句;
或者一个空块{}
。
如果需要为某个case
分支定义并初始化一个变量,应该把变量定义在块内,从而确保后面的所有case
都在变量的作用域之外。C++规定,不允许跨过变量的初始化语句直接跳转到该变量作用域的另一个位置。
C++11新标准引入,可以遍历容器或其他序列的所有元素。
范围for
语句语法形式:
for(declaration:expression)
statement
expression
表示的必须是一个序列,比如用{}
括起来的初始值列表、数组、vector
或string
等类型的拥有能返回迭代器的begin
和end
成员的对象
例子:
vector<int> v={1,2,3,4,5,6,7,8,9};
//范围变量必须是引用类型,才能对元素执行写操作
for (auto &r:v) //auto类型说明符确保类型相容
r*=2;
for
语句语法形式:
for (initializer;condition;expression)
statement
执行continue
语句之后,继续执行for
语句头的expression
。
对于范围for
语句来说,用序列中的下一个元素初始化循环控制变量。
还没学 -2019.1.12
完成施工 -2019.1.12