-
一个表达式末尾加上分号就变成了表达式语句。最简单的语句是空语句(一个单独的分号):语法上需要一条语句但是逻辑上不需要
-
复合语句是指用花括号括起来的(可能为空)语句和声明的序列:用在语法上需要一条语句,但是逻辑上需要多条语句的地方
-
C++规定在同一个语句块中
else
与离他最近的if
匹配 -
case
标签必须是整形常量表达式,如果某个case
标签匹配成功,将从该标签开始往后顺序执行所有的case
分支,除非程序显式中断,标签不应该孤零零地出现,它后面必须跟一条语句或者另外一个case
标签 -
C++规定:不允许跨过变量的初始化语句直接跳转到该变量作用域内的另一个位置。这就要求我们在
case
语句中不能对变量进行初始化操作(可以进行定义,定义是在编译时期发生的,所以无论如何都无法跳过,但是初始化是可以跳过的,但是这种操作是不被允许的)。case true: string file_name; //错误:控制流绕过一个隐式初始化的变量 int i = 0; //错误:控制流绕过一个显式初始化的变量 int j; //正确:没有初始化 break; case false: j = 1; //正确:j已经定义,这里是赋值 break;
如果我们想要在
case
语句中定义并初始化一个变量,应该把变量定义在块内,从而确保后面所有的case
标签都在变量的作用域之外case true: { string file_name; //正确:隐式初始化 //... } break; case false: { //... }
-
条件部分可以是一个表达式或者是一个带初始化的变量声明
-
定义在
while
条件部分或者while
循环体内的变量每次迭代都经历从创建到销毁的过程 -
使用
while
:- 不确定要迭代多少次
- 想在循环结束后访问循环控制变量
-
传统
for (initializer; condition; expression) statement
循环执行流程:initializer->condition->statement->expression->condition->statement->expression...
initializer
中可以定义多个变量,但只能有一个声明语句
-
范围
for
语句:for (declaration : expression) statement
expression
必须是一个序列,比如:用花括号括起来的初始值列表、数组、vector
或string
,共同特点是有可以返回迭代其的begin
和end
成员- 不能通过范围
for
循环增加vector
对象的元素
- 不能通过范围
-
do statement while (condition)
语句应该在括号包围起来的条件后用一个分号表示语句结束condition
使用的变量必须定义在循环体之外
-
goto
语句的作用:从goto
语句无条件跳转到同一函数内的另一条语句,语法形式为:goto label;
label
用于标识一条语句的标示符label: statement;
标签标示符独立于变量或其他标示符的名字,因此标签标示符可以和程序中其他实体的标示符使用同一个名字而不会相互干扰。
同
switch
语句类似,goto
语句也不能将程序从控制权从变量的作用域之外转移到作用域之内。向后跳过一个已经执行的定义是合法的(跳到变量定义之前意味着系统将销毁该变量然后重新创建)。感觉比较复杂也没有关系,反正不用 -
C++异常处理机制为程序中异常检测和异常处理两部分
-
throw
表达式表示遇到了无法处理的问题,我们说throw
引发了异常。例如:throw runtime_error("Data error");
该异常的类型是
runtime_error
对象,抛出异常将终止当前的函数,并把控制权转移给能处理该异常的代码类型
runtime_error
是标准库异常类型中的一种,定义在stdexcept
头文件中 -
try
语句块的通用语法形式:try { statement } catch (exception-delaration) { handler-statement } ...
try
语句块内部声明的变量在块外无法访问,特别是在catch
子句内也无法访问**如果最终还是没能找到任何匹配的
catch
子句,程序转到名为terminate
的标准库函数。**该函数的行为与系统有关,一般情况下执行该函数将导致程序非正常退出。while (cin >> item1 >> item2) { try { // } catch (runtime_error err) { cout << err.what() << endl; } }
-
-
编写异常安全的代码非常困难
exception
头文件定义了最通用的异常类exception
,只报告异常的发生,只能以默认初始化的方式初始化stdexcept
头文件定义了几种常用的异常类(详见P176表5.1),必须提供string
对象或者C
风格字符串初始化这些类型的对象new
头文件定义了bad_alloc
异常类型,只能以默认初始化的方式初始化type_info
头文件定义了bad_cast
异常类型,只能以默认初始化的方式初始化- 异常类型的
what
函数返回一个C风格字符串
C++Primer学习笔记:第5章 语句
最新推荐文章于 2022-11-16 13:03:51 发布