语句

空语句:

如果在程序的某个地方,语法上需要一个语句,但逻辑上并不需要,此时应该使用空语句。这种用法常见于在循环条件判断部分就能完成全部循环工作的情况。例如,下面程序从输入流中读取数据,在获得某个特殊值前无需作任何操作:

  // read until we hit end-of-file or find an input equal to sought
  while (cin >> s && s != sought)
  ; // null statement

循环条件从标准输入中读入一个值并检验 cin 的读入是否成功。如果成功读取数据,循环条件紧接着检查该值是否等于 sought。如果找到了需要的值,则退出 while 循环;否则,循环条件再次从 cin 里读入另一个值继续检验。

由于空语句也是一个语句,因此可用在任何允许使用语句的地方。由于这个原因,那些看似非法的分号往往只不过是一个空语句而已:

  // ok: second semicolon is superfluous null statement
  ival = v1 + v2;;

这个程序段由两条语句组成:一条表达式语句和一条空语句。

无关的空语句并非总是无害的:

在 while 或 if 条件后面额外添加分号,往往会彻底改变程序员的意图:

  // disaster: extra semicolon: loop body is this null statement
  while (iter != svec.end()) ; // null statement--while body is empty!
  ++iter; // increment is not part of the loop

这个程序将会无限次循环。与缩进的意义相反,此自增语句并不是循环的一部分。由于循环条件后面多了一个分号,因此循环体为空语句。








你可能感兴趣的:(语句)