【C++基础】系列博客为参考《C++ Primer中文版(第5版)》(C++11标准)一书,自己所做的读书笔记。
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。
1.表达式语句
C++语言中的大多数语句都以分号结束,一个表达式,比如ival+5
,末尾加上分号就变成了表达式语句(expression statement)。
2.空语句
最简单的语句是空语句(null statement),空语句中只含有一个单独的分号:
1
;//空语句
如果在程序的某个地方,语法上需要一条语句但是逻辑上不需要,此时应该使用空语句。例如,我们想读取输入流的内容直到遇到一个特定的值为止,除此之外什么事情也不做:
1
2
while (cin >> s && s != sought)
;//空语句
3.分号的使用
因为空语句是一条语句,所以可用在任何允许使用语句的地方。由于这个原因,某些看起来非法的分号往往只不过是一条空语句而已:
1
ival = v1 +v2;;//正确:第二个分号表示一条多余的空语句
多余的空语句一般来说是无害的,但是如果在if
或者while
的条件后面跟了一个额外的分号就可能完全改变程序员的初衷。例如,下面的代码将无休止地循环下去:
1
2
3
//额外的分号,循环体是那条空语句
while (iter != svec.end() ) ;//while循环体是那条空语句
++iter;//递增运算不属于循环的一部分
虽然从形式上来看执行递增运算的语句前面有缩进,但它并不是循环的一部分。循环条件后面跟着的分号构成了一条空语句,它才是真正的循环体。
4.复合语句(块)
复合语句(compound statement)是指用花括号括起来的(可能为空的)语句和声明的序列,复合语句也被称作块(block)。一个块就是一个作用域,在块中引入的名字只能在块内部以及嵌套在块中的子块里访问。通常,名字在有限的区域内可见,该区域从名字定义处开始,到名字所在的(最内层)块的结尾为止。例如:
1
2
3
4
while (val <= 10) {
sum += val;
++val;
}
⚠️块不以分号作为结束。
所谓空块,是指内部没有任何语句的一对花括号。空块的作用等价于空语句:
1
2
while (cin >> s && s != sought)
{ } //空块