c++primer学习笔记 第五章

第五章 语句

1.简单语句

别漏写分号也别多写分号,如果是空语句需要注释。

while (iter!=svec.end()) ; //循环体时空语句

++iter; //递增运算不属于循环的一部分

复合语句:用花括号括起来的语句和声明的序列,也称作块。一个块就是一个作用域,在块中引入的名字只能在块内部及子块中访问

块不以分号结束。

2.条件语句(if和switch)

1.if

else与离他最近尚未匹配的if匹配。注意使用花括号。

2.switch

case标签必须是整型常量表达式。

注意不要漏写break;

**default标签:**定义一个default标签很有用,告诉读者我们考虑到了默认的情况,但是标签后面必须有一条语句或者另一个case标签,可以是空语句或者空语句块。

如果要在case分支内定义并初始化变量,**应该把变量定义在块内,**确保后面的case标签都在变量作用域之外。

3.迭代语句(while,for)

1.while

不确定要迭代多少次,或者循环结束想访问循环控制变量可以用while。

2.传统for循环

for语句头中定义的对象只在for循环体内可见。

for(初始表达式;情况;表达式)中任意一个都可以省略

3.范围for语句

遍历容器或者其它序列的所有元素。

4.do while

不管条件的值是什么,都会先执行一次循环。

4.跳转语句(break,continue,goto,return)

1.break

终止离它最近的while,do while,for, switch语句

2.continue

终止最近的循环的当前迭代闭关立即开始下一次循环。

3.goto

从goto语句无条件跳转到同一函数的另一条语句。

**不要在程序中使用goto语句(**不是我说,那你发明它干嘛??)

标签语句定义:end: return

5.try语句块和异常处理

1.throw表达式

throw+表达式+;

表达式的类型就是抛出的异常类型,通常说throw引发(raise)了异常。

if(a!=b)

throw runtime_error("you are stupid"); //runtime_over是标准库异常类型的一种

2.try 语句块

try{ 程序}

catch(异常声明){ }

catch(异常声明){ }

每个标准库异常类型都定义了what的成员函数,这些函数没有参数,返回值是C风格字符串(const char*)

异常被抛出时,首先搜索抛出异常的函数,如果没找到匹配的catch,终止该函数,并在调用该函数的函数中继续寻找,如果还没找到,终止这个新函数,继续搜索。如果一直没找到匹配的catch子句,程序转到名为terminata的标准库函数,导致程序非正常退出。

3.标准异常

C++标准库定义了一组类,用于报告标准库函数遇到的问题。

exception头文件定义了最通用的异常类exception。只报告异常的发生,不提供额外信息。

stdexcept头文件定义了一种常用异常类。

new头文件定义了bad_alloc异常类型。

type_info头文件定义了bad_cast异常类型。

只能以默认初始化的方式初始化exception,bad_alloc,type_info对象,以string对象或者C风格字符串初始化其它异常类型。

``catch(runtime_error err){`

cout<<err.what()<<endl;

`}``

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值