5.1简单语句
一个语句在末尾加上分号;就变成了表达式语句.表达式语句的作用是执行表达式并丢弃掉求值结果(也可以用赋值运算符=将求值结果存起来),不存起来的话,大多数表达式语句是没有什么实际用处的表达式语句,例如:
int a=10;
a+5; //这就是没什么用的表达式语句
; //空语句,在这里同样没有
多余的空语句不仅没用,甚至可能对程序有不好的影响.
有些地方用得上空语句,但最好是加上注释,增强代码的可阅读性.
int i=0;
for(;i<10;i++){ //这里留空语句,是因为for语句头的第一个空是可以不写的
; //此处空语句表示这个循环并不执行什么具体操作.(单片机的延时函数会用到)
}
复合语句是指用花括号括起来的语句(有可能是空语句,例如上面的例子),复合语句也称为块.块不以分号;结尾,所以在for,while之类的代码块结尾不加分号(虽然有些时候加上也没什么影响,但是同上面所说,最好不要有多余的空语句)
5.2语句作用域
定义在块中的变量仅在块中有效.块内定义的变量出了块就失效了.
5.3条件语句
本小节较详细地介绍了if语句,switch语句,由于和C语言一致,我就不多介绍而是单独列出比较有价值的点.
5.3.1 if语句
注意使用花括号(块),if嵌套记得通过代码的缩进增加代码的可阅读性.
5.3.2switch语句
在每个分支都要记得break,在最后一条case语句最好也加上(显得专业)
5.4迭代语句
同上,不多介绍.
5.4.1 while语句
定义在while条件部分或者while循环体内的变量每次迭代都经历从创建到销毁的过程.
5.4.2传统的for语句
for语句头定义的对象只在循环体内可见(有效),for循环结束后对象失效.
5.4.3范围for语句
使用时类似:
vector<int>v(10,1);
for(int i:v){ //其中i可以自己随便起名,数据为v中的元素
cout<<i<<endl;
}
5.4.4 do while语句
do while 语句应该在括号包围起来的条件后用分号;表示结束.
do{
} while();
5.5跳转语句
5.5.1 break语句
break终止距离最近的条件语句或迭代语句,并且从这些语句之后的第一条语句开始继续执行.
5.5.2 continue语句
continue终止距离最近的迭代语句,并且开始迭代语句下一次迭代.
5.5.3 goto语句
不要使用!不要使用!不要使用!
5.6 try语句块和异常处理
C++中异常处理包括:
throw表达式,异常检测部分使用throw表达式来表示它遇到了无法处理的问题.
try语句块:异常处理部分使用try语句块处理异常,子语句catch"处理"(实际上是我们处理)异常,它们都被成为异常处理代码.
5.6.1 throw表达式
throw 表达式; //表达式的类型通常为异常类型,整条语句表示为抛出一个异常.
5.6.2 try语句块
try{
program-statements //程序语句
}catch (exception-declaration){ //异常声明
handler-statements //处理程序语句
}catch (exception-declaration){
handler-statements
}catch (exception-declaration){
handler-statements
}
try语句中声明的变量在块的外部无法访问,包括子语句catch.
5.6.3标准异常
C++标准库定义了一组类,用于报告标准库函数遇到的问题(你也可以自己定义一些异常类型).它们分别被定义在四个头文件中:
exception : 定义了最通用的异常类 exception.
stdexcept : 详细在下面的表中,较为常用.
new : 定义了bad_alloc异常类型.
type_info : 定义了bad_cast异常类型.