【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函数并终止当前程序的执行。


标准异常


相关文章
|
13天前
|
C++
来自C++ Primer 5的函数指针的定义,调用等
来自C++ Primer 5的函数指针的定义,调用等
16 0
|
9月前
|
C++
C++ Primer Plus 第二章编程练习
C++ Primer Plus 第二章编程练习
|
6月前
|
编译器 Linux C语言
C++Primer 【学习笔记】第一章 深思
main 函数在很多方面都比较特别,其中最重要的是每个 0+程序必须含有 main 函数,且 main 函数是(唯一)被操作系统显式调用的函数。
34 0
|
7月前
|
存储 编译器 程序员
C++ Primer Plus 第6版 读书笔记(10) 第十章 类与对象
C++ Primer Plus 第6版 读书笔记(10) 第十章 类与对象
38 0
|
7月前
|
存储 关系型数据库 编译器
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
70 1
|
7月前
|
存储 算法 编译器
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
33 1
|
7月前
|
存储 Java 编译器
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(一)
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(一)
24 0
|
8月前
|
存储 算法 前端开发
C++Primer 第一章 开始
C++Primer 第一章 开始
64 0
|
9月前
|
存储 编译器 C++
【C++ Primer Plus】基础知识 2
【C++ Primer Plus】基础知识
66 0
|
9月前
|
编译器 C++
【C++ Primer Plus】基础知识 1
【C++ Primer Plus】基础知识
98 0
【C++ Primer Plus】基础知识 1