C++ Primer(第五版)第五章-语句读书笔记。
- 
    switch语句 两点: - 
        case标签中的值必须是整型常量。 case标签:case关键字和后面的字,称为case标签。 
- 
        case中定义变量,要加大括号。 大括号才能建立一个块。块内才能建立内部变量。 
 
- 
        
- 
    范围for语句(range for statement) 容器需要满足的条件:返回迭代器的begin、end成员。如 大括号包括的元素,string、vector等。 for(auto i : {1,2,3}) std::cout << i ; for(auto i : "123") std::cout << i ; for(auto i : std::string("123")) std::cout << i ;- 
        使用 for(auto & r : v){} //声明为引用可更改v中元素 for(auto r : v){} // 只可读 
- 
        不可通过范围for语句修改迭代容器的大小! 因为预存了end()值。(这说明传统for语句每次都会执行end、size等语句的,而没有预存该值?) 
 
- 
        
- 
    while循环条件判断部分(括号中)可以声明变量 while(int i = get_num())注意,赋值语句的返回值就是该值,所以如果i为0则循环停止。 
- 
    异常处理结构 try { if( i > 10 ) { throw runtime_error("i must less than 10") ; } } catch(runtime_error re) { cerr << re.what() ; }异常需要手动抛(其实任何语言应该都是手动抛的…只不过自己在调别人写的函数,别人的函数里抛异常了…);捕获倒是应该比较通用。 附上示例代码: cin >> a >> b ; try { if( 0 == b) throw runtime_error("divider is zero") ; } catch(runtime_error err) { cerr << err.what() ; return -1 ; } int rst = a / b ; cout << rst << endl ;try 后面似乎一定要跟上大括号,不能像for、while等单语句时可省略括号。 如果错误没有被catch到,会跳到标准库中的 terminate函数中。该函数处理退出状态,正常退出也是到这个函数。
