- 简介
- 5.1 简单语句
- 5.2 语句作用域
- 5.3 条件语句
- 5.4 迭代语句
- 5.5 跳转语句
- 5.6 try语句和异常处理
- 小结
- 习题解答
和大多数语言一样,C++提供了条件执行语句、重复执行相同代码的循环语句和用于中断当前控制流的跳转语句。本章将详细介绍C++语言所支持的这些语句。
通常情况下,语句是顺序执行的。但除非是最简单的程序,否则仅有顺序执行远远不够。因此C++语言提供了一组控制流(flow-of-control)语句以支持更复杂的执行路径。
C++语言的大多数语句都以分号结束,一个表达式,末尾加上分号就变成了表达式语句(expression statement)。表达式语句的作用是执行表达式并丢弃掉求值结果:
ival+5;//一条没什么实际用处的表达式语句 cout<第一条语句没什么用,因为虽然执行力加法,但是相加的结果没有被使用。比较普遍的情况是:表达式语句中的表达式在求值时附带了其它效果,比如说给变量赋了新值或者输出了结果。
空语句
最简单的语句时空语句(null statement),空语句中只含有一个单独的分号。如果在程序的某个地方,语法上需要一个语句但是逻辑上不需要,此时应该用空语句。一种常见的情况是,当循环的全部工作在条件部分就可以完成时,我们通常会用到空语句。例如,我们想读取输入流的 内容直到遇到一个特定的值为止,除此之外什么事情也不做://重复读入数据直至到达文件某位或者某处输入 的值等于sought while(cin>>s && s!=sought) ;//空语句使用空语句时,应该加上注释,从而令读这段代码的人知道该语句是有意省略的。
别漏写分号,也别多写分号
因为空语句是一条语句,所以可用在任何允许使用语句的地方。所以某些看起来非法的分号往往只不过是一条空语句而已,从语法上说得过去。多余的空语句一般来说是无害的,但是如果在if或者while的条件后面跟了一个额外的分号就可能完全改变程序员的初衷。例如,下面的代码将无限循环下去://出现了额外的分号,循环体是那条空语句 while(iter!=svec.end()) ;//while循环体是那条空语句 ++iter;//递增运算不属于循环的一部分复合语句(块)
5.2 语句作用域 5.3 条件语句 5.4 迭代语句 5.5 跳转语句 5.6 try语句和异常处理 小结 习题解答
复合语句(compoud statement)是指用花括号括起来的(可能为空)的语句和声明序列,复合语句也被称为块(block)。一个块就是一个作用域,在块中引入的名只能在块内部以及嵌套在块中的子块里访问。 通常,名字在有限的区域内可见,该区域从名字定义处开始,到名字所在的(最内层)块的结尾为止。
如果在程序的某个地方,语法上需要一条语句,但是逻辑上需要多条语句,则应该给使用复合语句。例如,while循环和for循环,if-else语句。此时我们就应该将多条语句用花括号括起来,从而把语句序列转换为块。
所谓空块,是指内部没有任何语句的一对花括号。空块的作用等价于空语句。



