您的位置:首页 > 编程语言 > C语言/C++

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

2016-12-03 15:24 176 查看
Talk is cheap, show me the code.

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

switch (a) {

case 1:

case 2:

a *= 2;

break;

case 3:

a *= 3;

}


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

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

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

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


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

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

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

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++primer