文章目录
c++primer-第五章-语句
5.1 简单语句
需要注意的是不要漏写分号也不要多写分号。
5.2 语句作用域
可以在if、switch、while和for中的控制结构中定义变量,其中定义的变量只在其内部可见。
5.3 条件语句
1. if语句
形式为
if(condition)
statement;
else
statement;
需要注意的是必要的时候要用花括号防止出错。
2. switch语句
#include<iostream>
#include<string>
using namespace std;
int main() {
unsigned a = 0, e = 0, i = 0, o = 0, u = 0,other=0;
string text;
while (cin >> text) {
for (auto ch : text) {
switch (ch) {
case 'a':
++a;
break;
case 'e':
++e;
break;
case 'i':
++i;
break;
case 'o':
++o;
break;
case 'u':
++u;
break;
default:
other++;
break;
}
}
cout << "a-->" <<a<< ",e-->" <<e<< ",i-->" <<i<< ",o-->"<<o << ",u-->"<<u <<",others-->"<<other <<endl;
}
return 0;
}
注意break语句。
5.4迭代语句
1.while语句
while(condition)
statement;
2. 传统for语句
for(initializer;condition;expression)
statement;
3.范围for语句
for(declaration:expression)
statement;
之前都接触过了就不讲了。
4.do while语句
do
statement;
while(condition);
condition为假循环结束,否则重复循环。
5.跳转语句
- break语句负责终止离他最近的while、do while、for或switch,并从这些语句之后的第一条语句开始执行。
- continue语句终止最近的循环的当前迭代并立即开始下一条迭代。只能出现在for、while、do while循环的内部。
- goto语句可以无条件跳转到同一函数内的另一条语句。建议不要使用。
6. try语句块和异常处理
异常指存在于运行时的反常行为,这些行为超出函数正常功能的范围。
异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持。C++中异常处理包括:
- throw表达式,异常检测部分用throw表达式表示它遇到了不可解决的问题。抛出异常。
- try语句块,异常处理部分用try语句块处理异常。以关键字try开始,以一个或多个catch子句结束。catch子句也称为异常处理代码。
1. try语句块
通用形式
try{
statements;
}catch(exception-declaration){
handle-statements;
}catch(exception_declaration){
handle-statements;
}
2. 标准异常
C++标准库定义了一组类,用来报告标准库函数遇到的问题。这些异常类可以用在用户编写的程序里,他们分别定义在4个头文件里。
- exception头文件定义了最通用的异常类exception。它只报告异常的发生,不提供额外的信息
- stdexcept 头文件定义了几种常用的异常类,下表中列出
- new头文件定义了bad_alloc异常类型
- type_info头文件定义 bad_cast异常类型
<stdexcept>定义的异常类
exception | 最常见的问题 |
---|---|
runtime_error | 只有在运行时才能检测出的问题 |
range_error | 运行时错误:生成的结果超出有意义的值域范围 |
overflow_error | 运行时错误:计算上溢 |
underflow_error | 运行时错误:计算下溢 |
logic_error | 程序逻辑错误 |
domain_error | 逻辑错误:参数对应的结果值不存在 |
invalid_argument | 逻辑错误:无效参数 |
length_error | 逻辑错误:试图创建一个超出该类型最大长度的对像 |
out_of_range | 逻辑错误: 使用一个超出有效范围的值 |