C++ primer 语句

for语句头定义的任何对象只限制在for循环体里可见
for省略condition,等效于循环条件永远为true,循环体内就必须包含一个break或者return语句。
同理变量值的增加如果省略也需要增加break或者return结束循环,或者在循环体内安排语句修改变量值。
for语句头的定义处只能有一句话,因此如果要定义多个对象,必须是同一个类型

do-while语句
do
statement
while( condition );
codition的值不可以为假,while的condition中不可以定义变量

break语句
用于结束最近的while,do while ,for ,switch 语句,并将程序的执行权传递给紧接在被终止语句之后的语句。
对于if语句,只有当他嵌套在循环或者switch语句中,才可以使用break语句。

continue语句
最近的循环语句的当次迭代提前结束。
continue语句只出现在while,do-while,for循环语句中,包括嵌套在这些循环内部的语句块。

goto语句,不推荐使用

C++的异常处理包括:
throw表达式,错误检测部分
try表达式,错误处理部分,以try关键字开始,并以一个或多个catch子句结束。catch子句也叫处理代码。
由标准库定义的一组异常类。用来在throw和相应的catch之间传递信息。

throw
系统通过throw抛出异常,throw由关键字throw以及尾随的表达式组成,通常以分号结束。
这里写图片描述

try块
这里写图片描述
每一个catch语句包含了三个部分:关键字catch,圆括号内单个类型或者单个对象的声明–称为异常说明符,以及通常用花括号括起来的语句块。如果选择了一个catch子句处理异常, 执行完相关的语句,程序流立即继续执行紧随着最后一个catch子句的语句。

如果不存在处理该异常的catch语句,程序的运行就会跳转到名为terminate的标准库函数。该函数在exception头文件中定义。他的执行会导致程序非正常退出。
出现没有经过try定义的异常,系统自动调用terminate终止程序的执行。

标准异常
标准库异常类定义在四个头文件中
1.exception头文件定义了最常见的异常类,类名是exception,这个类只通知异常的产生,不会提供更多的信息。
2.stdexcept头文件定义了几种常见的异常类
这里写图片描述
3.new头文件定义了bad_alloc异常类型,提供因无法分配而由new抛出的异常
4.type_info头文件定义了bad_cast异常类型。

使用预处理器进行调试
程序所包含是调试代码仅在开发过程中执行,当应用程序已经完成,提交时,就关闭调试代码,使用NDEBUG预处理变量实现。
这里写图片描述

另一个常见的调试技术是使用NDEBUG预处理变量以及assert预处理宏,assert是定义在cassert头文件中。 只要 NDEBUG 未定义,assert 宏就求解条件表达式 expr,如果结果为 false, assert 输出信息并且终止程序的执行。 如果该表达式有一个非零 (例如,true)值,则 assert 不做任何操作。