标签:
无关的空语句并非总是无害的。
也称为块,是用一对花括号括起来的语句序列。块标识了一个作用域,一个名字只从其定义处到该块的结尾这段范围内可见。
在语句的控制结构中定义的变量,仅在定义它们的块语句结束前有效。
类类型能否用在条件表达式中取决于类本身。IO类型可以用作条件,vector和string类型一般不可用作条件。
悬垂else
默认地,else匹配给最后出现的尚未匹配的if子句。
代码风格
总是在if语句后使用花括号是一个比较好的做法
实际上,程序从匹配的case标号开始,并跨越case边界继续执行其他语句,直到switch结束或遇到break语句为止。
最好在每个case标号后面提供一个break语句。
允许程序向下执行多个case标号,可以这么写:
case标号必须是整型常量表达式,否则会编译错误;如果两个case标号具有相同的值,同样也会导致编译时的错误。
如需要为某个特殊case定义变量,可以引入块语句,在块语句中定义变量,从而保证这个变量在使用前被定义和初始化。
哪怕没有语句要在default标号下执行,定义default标号仍然是有用的,表明该情况考虑到了。
如果switch结构以default标号结束,而且default分支不需要完成任何任务,那么该标号后面必须有一个空语句。
数组内容复制
for(initializer; condition; expression) statemant
for语句头定义的对象只在for循环体里可见;可在for语句的initializer中定义多个对象,但该处只能出现一个语句,因此所有对象必须为同一类型。
do
statement while(condition); //注意,以分号结束
任何在循环条件中引用的变量都必须在do语句之前就已经存在。
break只限用于switch或循环语句中,用以跳出最内层的switch或循环语句
用于使最近的循环语句当次迭代提前结束,继续求解循环条件;
对于for循环,程序流程接着求解for语句中的expression表达式。
提供了函数内部的无条件跳转,不建议使用。
异常机制提供程序中错误检测与错误处理部分之间的通信。C++的异常处理有:
1)throw表达式,错误检测部分用该表达式来说明遇到不可处理的错误,throw引发了异常条件;
2)try块,错误处理部分使用它来处理异常。以try开始,并以一个或多个catch子句结束。try块中执行的代码所抛出的异常,会被其中一个catch子句处理,catch子句也称为处理代码。
3)由标准库定义的一组异常类,用来在throw和相应的catch之间传递有关错误信息。
以下,假设标准输入检查输入的数字不能为0
#include <iostream> #include <stdexcept> using namespace std; int main() { int val; cout << "Enter a number(not 0):"; while(cin >> val){ try{ if(!val){ throw runtime_error("wrong,it‘s zero !"); } cout << "ok !" << endl; } catch (runtime_error err){ cout << err.what() <<"\nTry Again? Enter y or n " << endl; char c; cin >> c; if(cin && c==‘n‘) break; } } return 0; }
复杂系统中,可能存在try嵌套调用,寻找处理代码的过程与函数调用链刚好相反。如果没有找到相应的处理代码,按执行路径回退,直到找到适当类型的catch为止。
如果不存在处理该异常的catch子句,程序跳转到terminate函数执行,它的执行导致程序非正常退出;
在程序中出现的异常,如果没有经过try块定义,发现异常时系统将自动调用terminate终止程序的执行。
默认情况下,NDEBUG未定义,程序处于debug状态,有以下两种情况:
1)开发过程执行的调试代码
#ifndef NDEBUG cout << “debug info” << endl; #endif //#ifndef 和 #endif之间的代码默认执行
2)assert(断言)宏在头文件cassert中定义,用来测试“不可能发生”的条件
assert (expr);
如果表达式为true,assert不做任何操作,若表达式为false,assert输出信息并终止程序的执行
当使用 -DNDEBUG 命令行选项定义NDEBUG时,或在程序开头提供#define NDEBUG预处理命令,以上两种调试语句都不会执行。
_ _FILE_ _ name of the file.
_ _LINE_ _ current line number.
_ _TIME_ _ time the file was compiled.
_ _DATE_ _ date the file was compiled.
_ _ func_ _ name of the function
标签:
原文地址:http://www.cnblogs.com/itree/p/4805970.html