语句
* 简单语句与复杂语句
- 空语句:;。用在“语法上要求一个语句,而逻辑上不需要”的时候。例如:while(true);
- 意外出现的多余空语句不会产生编译错误。例如:ival = dval + sval;;
- 复合语句:由一对花括号括起来的语句序列。复合语句不需要用分号作为结束。也
称为块或语句块。块引入了程序中的局部域。
* 声明语句
- 在C++中,对象的定义(int ival;),被称为声明语句,一般可以被放在程序中任何允许语句出现的地
方。
- 当把对象放在函数或语句块的开始时:
1 在函数或语句块的开头处,所有类对象的构造函数均被调用。声明的局部性 能够将初始化
的开销分摊到函数或语句块中。
2 通常情况下,在函数或语句块内部的所有程序语句被执行之前,该函数或者语句已经结束
了。如果必须在函数/语句的开头处声明,这将会带来执行一些不必要的构造函数-析构函数
对,这将对程序的运行效率产生不必要的影响。
- 一条声明语句可以由一个或多个对象定义构成。
* if语句
- 在condition中定义的对象,只在与if相关的语句或语句块中可见。例如:
if(int ival = compute_value()) { //可见}
// 错误,不可见
if(! ival)
* switch语句
- case后面的值必须是一组整数类型的常量表达式。
- 普遍的误解:只有与被匹配的case标签相关联的语句才被执行。实际上,程序从该点开始执行并
继续越过case边界直到switch语句结束。
- 在大多数情况下,故意省略break语句的case标签应该提供一条注释,以指明这种省略是故意
的。
- 声明语句也可以被放在switch语句的条件中,声明的变量在整个switch中都是可用的。
- 声明语句放在case或default相关联的语句是非法的,除非把它放在一个语句块中。
- case不能重复
* for循环语句
- for循环最普遍的用法是遍历一个定长的数据结构,例如:数组、vector等。
- 在init-statement中可以定义多个对象,但只能出现一个声明语句,因此,所有对象必须是相同
类型
* while语句
- while循环擅长在某个条件保持为真时不停的执行。
* do while语句
- do
Statement
while(condition);
- 保证至少执行一次
- 不像其他循环语句do while循环的条件即condition部分不支持对象定义
* break语句
- 终止最近的while、dowhile、for或switch语句,程序的执行权被传递给紧接着被终止语句之后的
语句
- 一般来说,break语句只能出现在循环或switch语句中
* continue语句
- 结束当前迭代,执行权被传递给条件计算部分。
* goto语句
- 从goto语句跳转到同一函数内部某个位置的一个标号语句。
- 语法:goto label; // label是用户定义的标识符。标号语句只能用作goto的目标,必须由冒
号结束,且标号语句不能紧接在结束右花括号的前面。(可以使用在右花括号前加一个分号解
决)
- goto语句不能向前跳过没有被语句块包围的声明语句。