C++

C++ Primer学习笔记(六)

Posted by HK on February 19, 2019

第五章 for、while、do while循环,表达式和语句,关系运算符,嵌套玄幻和二维数组。

第五章 循环和关系表达式

for循环

for循环为执行重复的操作提供了循序渐进的步骤:

  1. 设置初始值。
  2. 执行测试–循环是否应当继续进行。
  3. 执行循环操作。
  4. 更新用于测试的值。

初始化、测试和更新操作构成了控制部分,控制部分后面的语句叫做循环体,当测试表达式为true时执行。循环只执行一次初始化。通常,程序使用该表达式将变量设置为起始值,然后用该变量计算循环周期。

-test-expression决定循环体是否被执行。通常表达式为关系表达式。 -for循环是entry-condition循环,即在每轮循环之前,都将测试表达式的值。 -update-expression在每轮循环结束时执行,此时循环体已经执行完毕。通常用来对跟踪循环轮次的变量值进行增减。

for循环由一条语句组成。for语句的控制部分使用3个表达式。

简单语句

1.绝大多数语句以分号结束。空语句只有一个单独的分号。

2.复合语句是指用花括号括起来的语句和声明的序列,复合语句也被称作块。

一个块就是一个作用域,在块中引入的名字只能在块内部以及嵌套在块中的子块里访问。

语句作用域

1.可以在if,switch,for和while语句的控制结构内定义变量。定义在控制结构当中的变量只在相应语句的内部可见,一旦语句结束,变量也就超出其作用范围了。

swtich可以定义,但不允许显示/隐式初始化

case 1:
    string s;//错误,绕过隐式初始化
    int i=0;//错误,绕过显式初始化
    int j;//正确,没有初始化
break;
case 2:
    j=10;//正确
    if(s.empty())//s在作用域内,但s没有被初始化
        ...
break;

条件语句

1.C++提供了两种按条件执行的语句。

一种是if语句,它根据条件决定控制流。

一种是switch语句,它计算一个整型表达式的值,然后根据这个值从几条执行路径中选择一条。

2.if语句的作用是:判断一个指定的条件是否为真,根据判断结果决定是否执行另外一条语句。

悬垂else:指有4个if语句,2个else语句,不知道哪个if和哪个else相匹配。

3.switch语句首先对括号里的表达式求值,表达式值转换成整数类型,然后与每个case标签的值比较。

case关键字和它对应的值一起被成为case标签。case标签必须是整型常量表达式。

4.如果没有任何一个case标签能匹配上switch表达式的值,程序将执行紧跟在default标签后面的语句。

迭代语句

1.迭代语句通常称为循环,它重复执行操作直到满足某个条件才停下来。while和for语句在执行循环之前检查条件,do while先执行循环体,然后再检查条件。

2.范围for语句:C++11新标准引入了一种更简单的for语句,这种语句可以遍历容器或者其他序列的所有元素。

范围for语句的语法形式是:

for(declaration: expression)

    statement;

跳转语句

1.C++提供了4种跳转语句:break,continue,goto和return。

2.break语句负责终止离它最近的while、do while、for或switch语句,并从这些语句之后的第一条语句开始继续执行。

3.continue语句终止最近的循环中的当前迭代并立即开始下一次迭代。只能出现在for,while,do while语句里。

4.goto语句的作用是从goto语句无条件跳转到同一函数的另一条语句。