C++primer第4版第五章第六章表达式和语句

来源:互联网 发布:孤岛危机3优化补丁 编辑:程序博客网 时间:2024/06/04 18:29

Talk is cheap, show me the code.

  1. switch的所有case后都必须是常量,不能是变量。switch如果有多个case执行相同语句,每个判断的case都应该保留:

    switch (a) {
    case 1:
    case 2:
    a *= 2;
    break;
    case 3:
    a *= 3;
    }

  2. 变量定义的作用域只限于它所在的块内。

  3. 注意do{}while(condition);后面是由分号的。

  4. 注意在for循环中初始化语句如果定义两个变量的类型相同,只写一个变量类型即可,否则可能报错:

    for(int i = 0, int j = 0; i < 2 && j < 2; ++i, ++j){} //g++报错j qualified-id,去掉j前面的int即可

  5. 常见的调试技术:NDEBUG预处理变量,assert预处理宏。

    NDEBUG预处理变量:通过预处理语句#ifndef NDEBUG #ifdef NDEBUG #endif等之类进行分支判断,调试不同的语句,而NDEBUG是否预定义可以通过编译命令添加,比如g++ -DNDEBUG main.c -o main。

    assert预处理宏:首先需要包含cassert头文件,再需要判断的地方加上assert(statement);语句,如果没有定义NDEBUG变量,statement为true,则输出信息终止程序运行,如果statement为false,则继续执行程序。

  6. C++的异常处理机制try-catch和java类似,头文件stdexcept定义了一些常见的异常类型,比如runtime_error,必须通过字符串来实例化传递错误信息,catch捕捉到错误后通过what()函数打印出抛出的错误信息。

    #include <stdexcept>
    try {
    throw runtime_error("hello");
    } catch (runtime_error err) {
    cout << err.what() << endl;
    } catch (exception err) {
    cout << err.what() << endl;
    }

0 0