C++学习笔记(五)

来源:互联网 发布:淘宝金鹰汇怎么样 编辑:程序博客网 时间:2024/06/07 15:22

第五章 语句

最简单的语句是空语句,空语句只含有一个单独的分号“;”,如果在程序的某个地方,语法上需要一条语句但逻辑上不需要,此时应使用空语句。使用空语句时最好加上注释。

   ival=v1 + v2;;   这条语句正确,前面为一表达式语句,后面为空语句。

复合语句是指用花括号括起来的语句和声明的序列,也称为块。花括号内可为空。如果在程序的某个地方,语法上需要一条语句,但是逻辑上需要多条语句,则应该使用复合语句。

条件语句  

C++提供了两种按条件执行的语句,if和switch。if是根据所给出的条件决定控制流;switch计算一个整型表达式的值,根据这个值从几条执行路径中选择一条。

1.if 语句

包含两种形式  :if (condition) statement和 if (condition) statement else statement

其中condition必须用圆括号括起来,不管条件是表达式还是初始化了的变量声明,都必须能转换成布尔类型。

statement可以是简单语句也可以是块。

如果condition为假,则跳过statement。

悬垂else:当一个if语句嵌套在另一个if语句内部是时,很可能if分支会多于else分支,如何给某个else和if匹配的问题成为悬垂else。c++规定else与他最近的尚未匹配的if进行匹配。

2.switch语句

switch(expression){ case a:  break;  case b: break;.........}

首先对括号内的表达式求值,该表达式紧跟在switch后面,可以是一个初始化的变量声明。表达式的值转换为整数类型,然后与每个case标签的值比较。如果和某个case标签匹配成功,程序从该标签后的第一条豫剧开始执行,直到switch的结尾或者遇到break语句。

case关键字和它对应的值一起被称为case标签。case标签必须是整型常量表达式。任何两个case标签的值不能相同。

如果没有case能匹配的上,程序将执行紧跟在default标签后面的语句。如果switch已一个空default结束,则该标签后必须跟上一条空语句或一个空块。

迭代语句(循环)

while和for在执行循环体之前先检查条件,do while先执行循环体,在检查条件。

1.while语句

while(condition) statement

如果condition为假,则不执行statement。

当不确定到底要迭代多少次时,使用while循环比较合适。或者想在循环结束后访问循环控制变量,也可使用while。

2.for语句

for(init-statement; condition ;expression)  statement

init-statement必须是以下三种形式中的一种:声明语句,表达式语句或空语句。

如果condition为假则不执行statement。

省略condition的效果等价于此条件的值永远都是真,程序将一直执行下去,所以再循环体内必须有语句负责推出。

3.do while语句

do{statement} while(condition)

不要忘记最后的;号。

在do语句中,condition的值首先执行一次statement,condition不能为空。如果condition的值为假,循环终止;否则重复循环。condition使用的变量必须定义在循环体之外。

跳转语句

跳转语句中断当前的执行过程,提供了四种: break  continue goto return

1.break语句

负责终止离他最近的while、do while、for、switch语句,并从这些语句之后的第一条开始执行。只能出现在迭代和switch语句内部。

2.continue语句

负责终止最近的循环中的当前迭代并立即开始下一次迭代。只能出现在for、while、do while循环的内部。

和break类似的是出现在嵌套循环中的continue仅作用于离它最近的循环;和break不同的是,只有当switch语句嵌套在迭代语句内部时,才能在switch里使用continue。

3.goto语句 不建议使用

4.return 

异常处理

异常是指存在于运行时的反常行为,这些行为超出了函数正常功能的范畴。典型的异常包括失去失去数据库连接以及遇到意外输入等。

当程序的某部分检测到一个它无法处理的问题时,需要用到异常处理。异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持。

1.throw表达式

异常检测部分使用throw表达式来表示它遇到了无法处理的问题。说throw引发了异常。

throw表达式包含关键字throw和紧随其后的一个表达式,其中表达式的类型就是抛出的异常类型。

比如 throw runtime_error("****************"),该异常类型是runtime_error的对象,类型runtime_error是标准库异常类型中的一种,定义在stdexcept头文件中。

2.try语句块

异常处理部分使用try语句块处理。try语句块以关键字try开始,并以一个或多个catch子句结束。try语句块中代码抛出的异常通常会被某个catch子句处理,所以catch子句也被称为异常处理代码

catch子句包含三部分:关键字catch、括号内一个对象的声明(异常声明,比如上面的runtime_error),以及一个块。

详情看下面的例子。


程序要求输入两个数字来求除法。如果除数为0的时候,抛出一个异常,该异常是runtime_error类型,或说抛出了一个runtime_error异常。然后进入catch子句运行。err.what()用于显示“error!!!!!!!!” 

需要注意的是break用于跳出while循环,而非catch。

0 0