c++ primer第五章 ——语句

5.1 简单语句
; // 空语句,空语句只有一个单独分号,使用时最好加上注释
多写了分号可能造成误解
while(iter != svec.end());
++ iter; //由于;的存在,这个递增变成了不是while 循环的一部分
{ } //空块 块不以分号结束 空块的作用等价于空语句

if语句
if(boolean_expression 1)
{
// 当布尔表达式 1 为真时执行
}
else if( boolean_expression 2)
{
// 当布尔表达式 2 为真时执行
}
else
{
// 当上面条件都不为真时执行
}
else与离它最近的尚未匹配的if 匹配(使用花括号可以改变)

switch语句
switch(expression){
case constant-expression :
statement(s);
break; // 可选的
case constant-expression :
statement(s);
break; // 可选的

// 您可以有任意数量的 case 语句
default : // 可选的
   statement(s);

}
1、switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
2、在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
3、case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
4、当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
5、当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
6、不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
7、一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
多个case
switch (ch)
{
case ‘a’:
case ‘e’:
case ‘i’:
++vowelcnt;
break;// 在这个语句中,只要ch是aeo中的任何一个都会执行代码。
}

while 语句
while(condition)
{
statement(s);
}
条件为真执行

for 语句
for(init-statment;condition;experssion)
statement
初始化,循环条件,表达式//这些for里面都可以进行省略,以空语句代替
表达式在for循环体之后执行
初始化可以定义多个对象,但是只能有一条声明语句
vector v;
for (int i; cin >> i ; ?
v.push_back(i);

范围for语句
for (declaration : expression)
statement;
// expression 表示的必须是一个序列,declaration定义一个变量,序列中的每个元素都得能转换成该变量的类型。 可以使用auto
每次迭代都会重新定义循环控制变量,并将其初始化成序列中的下一个值

do while 语句
do
statement
while (condition); //注意while 后面需要加上分号
先执行语句或者块,后判断条件,所以不允许在条件部分定义变量
condition为真执行循环

跳转语句
break
负责终止离它最近的while do while for switch 语句,并从这些语句之后的第一条语句开始继续执行
continute语句
终止最近的循环中的当前迭代并立即开始下一次迭代。只能出现在for while do while 循环的内部,或者嵌套在此类循环里的语句或块的内部

goto 语句
作用是从goto 语句无条件跳转同一函数内的另一条语句
goto lable ;
lable: 带标签语句,在它之前有一个标识符以及一个冒号
end : return;// 带标签语句,可以作为goto 的目标

try 语句块和异常处理
1,throw表达式:异常检测部分使用throw表达式来表示它遇到了无法处理的问题。
2,try语句块中抛出的异常由catch子句处理异常,try语句块中的代码抛出的异常通常会被某个catch 子句处理。因为catch 子句处理异常,所以它们也被称为异常处理代码
3,一套异常类:用于在throw表达式和相关的catch子句之间传递异常的具体消息。

#include
#include
using namespace std;
int main()
{
int a, b;
cout << "Input two integers: ";
while (cin >> a >> b) {
try {
if (b == 0) throw runtime_error(“divisor is 0”);
cout << static_cast(a) / b << endl;
cout << "Input two integers: ";
}
catch (runtime_error err) {
cout << err.what();//what是runtime_error类的一个成员函数,返回值时一个//初始化一个具体对象时所用的string对象的副本
cout << “\nTry Again? Enter y or n:” << endl;
char c;
cin >> c;
if (!cin || c == ‘n’)
break;
}
}
return 0;

其中runtime_error是一个异常类。
异常类定义在4个头文件中:
1,exception头文件定义了最通用的异常类exception。
2,stdexcept头文件定义了常用的异常类
rentime_error//运行时错误
range_error//结果超出了有意义的值域范围
overflow_error//计算上溢
underflow_error//计算下溢
logic_error//逻辑错误
domain_error//参数对应的结果,值不存在
invalid_error//无效参数
length_error//试图创建一个超出该类型最大长度的对象
out_of_range//使用超出有效范围的值
3,new头文件定义了bad_alloc异常类型
4,type_info头文件定义了bad_cast异常类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王蒟蒻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值