【C++Primer】第5章:语句

简介: 【C++Primer】第5章:语句

第5章 语句


5.1 简单语句


语句以分号结束


空语句:在程序的某个地方,语法上需要一条语句,但是逻辑上不需要,使用空语句。


块语句:在程序的某个地方,语法上需要一条语句,但是逻辑上需要多条语句,使用块语句(复合语句)。


空块的作用等价于空语句


5.2 语句作用域


5.3 条件语句


if,switch,


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


5.4 迭代语句


while,传统for,范围for,do…while


范围for是C++11新标准,能直接遍历到容器中元素


do…while先执行循环体,再检查条件


do
    statement
while (condition);


5.5 跳转语句


break,continue,goto,return


break语句负责终止离它最近的while,do…while,for或者switch语句,并从这些语句之后的第一条语句开始继续执行。


continue语句终止最近的循环中当前迭代并立即开始下一次迭代。


千万不要用goto,代码会乱七八糟


5.6 try语句块和异常处理


throw表达式


用于引发一个异常


//首先检查两条数据是否是关于同一种书籍的
if(item1.isbn() != item2.isbn()){
    throw runtime_error("Data must refer to same ISBN");
}
//如果程序执行到了这里,表明两个ISBN是相同的
cout << item1 + item2 << endl;


抛出异常将终止当前的函数,并把控制权转移给能处理该异常的代码。


try语句块


try语句块中抛出的异常由对应的catch语句处理


try{
}catch(错误类型1){
}catch(错误类型2){
}//...


while(cin >> item1 >> item2){
    try{
    }catch(runtime_error err){
        cout<< err.what()
            << "\nTry Again? Enter y or n" << endl;
        char c;
        cin >> c;
        if(!cin || c == 'n'){
            break;
        }
    }
}


每个标准库异常类都定义了名为what的成员函数,这些成员函数没有参数。说明错误的原因


如果一段程序没有try语句块且发生了异常,系统会调用terminate函数并终止当前程序的执行。


标准异常


目录
相关文章
|
5月前
|
编译器 C++
c++primer Plus 6 的课后题(第二章2.6)
c++primer Plus 6 的课后题(第二章2.6)
|
5月前
|
存储 程序员 C语言
c++primer plus 6 读书笔记 第四章 复合类型
c++primer plus 6 读书笔记 第四章 复合类型
|
5月前
|
C++
c++primer Plus 6 的课后题(第三章3.6)
c++primer Plus 6 的课后题(第三章3.6)
|
5月前
|
编译器 C++
c++primer plus 6 读书笔记 第十章 对象和类
c++primer plus 6 读书笔记 第十章 对象和类
|
5月前
|
算法 小程序 IDE
c++primer plus 6读书笔记第一章预备知识
c++primer plus 6读书笔记第一章预备知识
|
5月前
|
编译器 数据安全/隐私保护 C++
c++primer plus 6 读书笔记 第十三章 类继承
c++primer plus 6 读书笔记 第十三章 类继承
|
5月前
|
C++
C++ Primer Plus (第6版)中文版 (使用XMind整理)
C++ Primer Plus (第6版)中文版 (使用XMind整理)
C++ Primer Plus (第6版)中文版 (使用XMind整理)
|
5月前
|
C++
c++primer plus 6 读书笔记 第十四章 C++中的代码重用
c++primer plus 6 读书笔记 第十四章 C++中的代码重用
|
5月前
|
C++
c++primer plus 6 读书笔记 第十一章 使用类
c++primer plus 6 读书笔记 第十一章 使用类
|
5月前
|
编译器 C++
c++primer plus 6 读书笔记 第八章 函数探幽0
c++primer plus 6 读书笔记 第八章 函数探幽0