【Primer C++学习笔记】5. 语句

目录

5.1 简单语句

5.2 语句作用域

5.3 条件语句

5.3.1 if语句

5.3.2 switch语句

5.4 迭代语句(循环)

5.4.1 while语句

5.4.2 for语句

5.4.3 范围for语句

5.4.4 do while语句

5.5 跳转语句

5.5.1 break语句

5.5.2 continue语句

5.5.3 goto语句

5.6 try语句块和异常处理

5.6.1 throw表达式

5.6.2 try语句块

5.6.3 标准异常


5.1 简单语句

  • 空语句:只有一个分号占位;
  • 复合语句(块):用花括号括起来的语句和声明的序列,一个块就是一个作用域,在块中引入的名字只能在块内部以及嵌套在块中的子块访问;

5.2 语句作用域

在if、switch、while和for语句的控制结构内定义变量,该变量只在相应语句的内部可见。


5.3 条件语句

5.3.1 if语句

  

悬垂else:在有多个无匹配的if的情况中,else与离它最近的无匹配的if匹配

5.3.2 switch语句

case标签必须是整型常量表达式,某个case标签匹配成功将从该标签开始往后顺序执行所有case分支,因此必须添加break中断当前的控制流 :

当希望多个case标签共享同一组操作时,可以省略掉break语句:

 如果没有任何一个case标签能够匹配switch表达式的值,程序会执行default标签后面的语句


5.4 迭代语句(循环)

5.4.1 while语句

当不确定迭代具体次数可以使用while循环

5.4.2 for语句

 for语句头可以省略三个元素:省略第二个元素的时候需要额外设置退出循环的语句

5.4.3 范围for语句

用于遍历容器或其他序列的所有元素:

  • expression表示的必须是一个序列(花括号括起来的初始值列表、vector对象、string对象......这些类型的共同特点是拥有能返回迭代器的begin和end成员) ;
  • declaration定义一个变量,序列中的每个元素都能转换成该类型的变量(最简单的办法是使用auto类型说明符);

 r必须是引用类型才能对元素执行写操作。

5.4.4 do while语句


5.5 跳转语句

5.5.1 break语句

  • 终止离他最近的while,do...while,for或switch语句,并从这些语句之后的第一条语句开始执行
  • 只能终止while,do...while,for或switch语句

5.5.2 continue语句

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

5.5.3 goto语句

  • 从goto语句无条件跳转到同一函数内的另一条语句
  • 不要使用

5.6 try语句块和异常处理

异常处理机制:

  • throw表达式:异常检测部分使用throw表达式表示遇到了无法处理的问题;
  • try语句块:异常处理部分,以关键字try开始并以一个或多个catch子句结束,try语句块中代码抛出的异常通常会被某个catch子句处理;
  • 异常类:在throw表达式和相关的catch子句之间传递异常的具体信息;

5.6.1 throw表达式

图书管理系统中如果isbn码不一致则抛出异常:

5.6.2 try语句块

 exception-declaration:异常声明,当选中了某个catch子句处理异常之后,执行与之对应的块。

以上一节的图书管理系统为例:

如果try语句块的代码抛出了runtime_error异常则执行catch块内的语句,给用户的提示信息“err.what()”是runtime_error的成员函数,返回代码抛出异常时的string对象,本节的catch语句输出如下:

5.6.3 标准异常

C++定义了一组类用于报告标准库函数遇到的问题,定义在4个头文件中:

  • exception头文件定义了最通用的异常类exception,只报告异常的发生不提供任何额外信息;
  • stdexcept头文件定义了几种常用的异常类,如下表所示;
  • new头文件定义了exception异常类型;
  • type_info头文件定义了exception异常类型;

  • 以默认初始化的方式初始化exception、exception、exception对象,不允许为这些对象提供初始值;
  • 其它异常类型应该使用string对象初始化这些类型的对象(不能使用默认初始化),必须提供初始值,该初始值含有错误相关的信息;
  • 异常类型只定义了名为what的成员函数,没有任何参数,返回一个指向c风格字符串的const char*,提供关于异常的文本信息。如果异常类型有一个字符串初始值,what返回该字符串,对于其他无初始值的异常类型来说,what返回的内容由编译器决定。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值