chapter-5

C++ Primer第五章!

'''

include "stdafx.h"

include

include

include

include

include

using namespace std;

int main()
{
//空语句
; //某些语法上需要语句,但是逻辑上不需要,则需要空语句。使用空语句时应该加上注释,便于理解!

//复合语句,也被称为块。一个块就是一个作用域。块不以分号作为结束!
{
    ;
}
//条件语句
const vector scores = { "F","D","C","B","A","A++" };
double grade = 70;
if (grade < 60)
    cout << scores[0] << endl;
else
{
    cout << scores[(grade - 50) / 10];
}                                           //if语句还可以进行多层嵌套

map cnt = { {'a',0},{ 'e',0 } ,{ 'i',0 } ,{ 'o',0 } ,{ 'u',0 } };
char ch;
int numbers_cnt = 0;
while (++numbers_cnt <= 6 && cin>>ch)
{
    switch (ch)
    {
    case 'a':               //case标签必须为整型常量表达式
        ++cnt.at(ch);
        break;              //break退出当前循环,如果没有加break,则最好加一段注释说清楚程序的逻辑
    case 'e':
        ++cnt.at(ch);
        break;
    case 'i':
        ++cnt.at(ch);
        break;
    case 'o':
        ++cnt.at(ch);
        break;
    case 'u':
        ++cnt.at(ch);
        break;
    default:                //如果没有任何一个case标签能够匹配上,则程序将执行default标签。
        break;
    }
}
auto map_cnt = cnt.cbegin();
while (map_cnt != cnt.cend())       //使用迭代器遍历map容器
{
    cout << map_cnt->first << ":" << map_cnt->second << endl;
    ++map_cnt;
}

int i_swich = 2;
switch (i_swich)                    //在switch中定义变量,应该避免控制流跨过变 量的初始化行为!
{
case 1:
    //string  file_name;            错误行为,控制流可能绕过file_name隐式初始化的变量
    //int ival = 0;                 错误行为,控制流可能绕过ival显示初始化的变量
    int jval;                       //正确,只声明,为初始化!
    break;
case 2:
    jval = 0;
    //cout << file_name.empty();
default:
    break;
}

//迭代语句,重复执行操作直到满足某个条件为止
//while(cin>>i)                 重复读取数据,直到读取失败
//for(decltype(i) j=0;j<5;++j)  for 循环
//for(auto i:cnt)               for范围,适用于容器、数组等
vector v = { 1,2,3,4,5 };
for (auto &i : v)
{
    i = i * 2;
}
for (auto beg = v.begin(); beg != v.end(); ++beg)
{
    auto &r = *beg;
    r = r * 2;
}
auto beg = v.cbegin();
while (beg != v.cend())
{
    cout << *beg << "-";
    ++beg;
}
cout << endl;

//跳转语句, break/continue/goto/return
//break,跳出最近的循环;continue,跳出for、while本次循环且进入下次循环;goto,跳至带标签语句后,不要使用它!

//try语句块和异常处理
//throw表达式,引发一个异常;try语句块,处理异常代码

try {
    throw runtime_error("Error!");          //抛出异常,并处理异常。检查,抛出,捕获!
}
catch (runtime_error err)                   //runtime_error是中定义的异常类,必须使用const char*提供初始化。
{
    cout << err.what() << endl;             //如果一段程序没有try语句块且发生了异常,系统会调用terminate函数并终止当前程序的执行。
}
cin.ignore();
return 0;

}
'''
//本章介绍了C++中常见的语句结构,顺带了说明了C++如何进行异常处理!

你可能感兴趣的:(chapter-5)