@Moritz
2019-03-29T08:21:23.000000Z
字数 959
阅读 560
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
