type
status
date
slug
summary
tags
category
icon
password
Property
条件语句
if语句
if
语句的形式:if-else
语句的形式:
当代码中
if
分支多下 else
分支时,C++
规定 else
与离它最近的尚未匹配的 if
匹配,从而消除了程序的二义性。要想
else
分支和外层的 if
语句匹配起来,可以在内层 if
语句的两端加上花括号, 使其成为一个块:switch语句
switch
语句先对括号里的表达式求值,值转换成整数类型后再与每个 case
标签的值进行比较(case
标签必须是整型常量表达式)。如果表达式的值和某个 case
标签匹配,程序从该标签之后的第一条语句开始执行,直到到达 switch
的结尾或者遇到 break
语句为止。另外,
switch
语句中可以添加一个 default
标签,如果没有任何一个 case
标签能匹配上 switch
表达式的值,程序将执行 default
标签后的语句。即使不准备在 default
标签下做任何操作,程序中也应该定义一个 default
标签,其目的在于告诉他人我们已经考虑到了默认情况,只是目前不需要实际操作。不允许跨过变量的初始化语句直接跳转到该变量作用域内的另一个位置。如果需要为
switch
的某个 case
分支定义并初始化一个变量,则应该把变量定义在块内迭代语句
迭代语句通常称为循环,它重复执行操作直到满足某个条件才停止。
while
和 for
语句在执行循环体之前检查条件,do-while
语句先执行循环体再检查条件。while语句
while
语句的形式:只要
condition
的求值结果为 true
,就一直执行statement
(通常是一个块)。condition
不能为空,如果condition
第一次求值就是 false
,statement
一次都不会执行。定义在
while
条件部分或者 while
循环体内的变量,每次迭代都经历从创建到销毁的过程。在不确定迭代次数,或者想在循环结束后访问循环控制变量时,使用 while
比较合适。do-while语句
do-while
语句的形式:计算
condition
的值之前会先执行一次statement
,condition
不能为空。如果condition
的值为 false
,循环终止;否则重复执行statement
。condition
使用的变量必须定义在循环体之外,因为 do-while
语句先执行语句或块,再判断条件,所以不允许在条件部分定义变量。传统的for语句
for
语句的形式:一般情况下,
initializer
负责初始化一个值,这个值会随着循环的进行而改变。condition
作为循环控制的条件,只要condition
的求值结果为true
,就执行一次 statement
,执行后再由 expression
负责修改initializer
初始化的变量,修改发生在每次循环迭代之后,这个变量就是condition
检查的对象。如果condition
第一次求值就是false
,statement
一次都不会执行。
initializer
中也可以定义多个对象,但是只能有一条声明语句,因此所有变量的基础类型必须相同。for
语句头中定义的对象只在 for
循环体内可见。for
语句头能省略掉initializer
、condition
和expression
中的任何一个(或者全部):范围for语句
范围
for
语句的形式:expression
表示一个序列,拥有能返回迭代器的begin
和end
成员,比如用花括号括起来的初始值列表、数组或者者vector
或string
等类型的对象。declaration
定义一个变量,序列中的每个元素都应该能转换成该变量的类型(可以使用auto
)。如果需要对序列中的元素执行写操作,循环变量必须声明成引用类型,每次迭代都会重新定义循环控制变量,并将其初始化为序列中的下一个值,之后才会执行statement
。跳转语句
break语句
break
语句只能出现在迭代语句或者 switch
语句的内部(包括嵌套在此类循环里的语句或块的内部),负责终止离它最近的 while
、do-while
、for
或者 switch
语句,并从这些语句之后的第一条语句开始执行。break
语句的作用范围仅限于最近的循环或者 switch
。continue语句
continue
语句只能出现在迭代语句的内部,负责终止离它最近的循环的当前一次迭代并立即开始下一次迭代。continue
语句只能出现在 for
、while
和 do while
循环的内部,或者嵌套在此类循环里的语句或块的内部。和 break
语句不同的是,只有当 switch
语句嵌套在迭代语句内部时,才能在 switch
中使用 continue
。continue
语句中断当前迭代后,具体操作视迭代语句类型而定:- 对于
while
和do-while
语句来说,继续判断条件的值。
- 对于传统的
for
语句来说,继续执行for
语句头中的第三部分,之后判断条件的值。
- 对于范围
for
语句来说,是用序列中的下一个元素初始化循环变量。
goto语句
goto
语句是一种特殊的语句,它的作用是从 goto
语句无条件跳转到同一函数内的另一条语句,在它之前有一个标识符和一个冒号。goto
语句的形式:goto
语句使程序无条件跳转到标签为 label
的语句处执行。标签标识符独立于变量和其他标识符的名字,它们之间不会相互干扰。但两者必须位于同一个函数内,同时
goto
语句也不能将程序的控制权从变量的作用域之外转移到作用域之内。