语句
-
简单语句
-
空语句
只有单独一个分号,常用于在循环条件判断部分就能完成全部循环工作的情况;
while (cin >> s && s != sought) ; //空语句 //循环条件从标准输入中读入一个值并检验cin的读入是否成功;若成功,接着检查该值是否等于sought;找到需要的值,退出循环,否则继续从cin里面读取数据
无关的空语句并非总是无害的,非法的分号往往只不过是一个空语句而已;
while (iter != svec.end()) ; //循环体为空语句 ++iter; //导致本句不属于循环的一部分 //最终导致无限循环
-
声明语句
尽管定义语句的说话更准确些,但定义语句经常被称为声明语句
-
复合语句
也叫块,用一对花括号括起来;
块标识了一个作用域,在块中引入的名字只能在该块内部或嵌套在块中的子块里访问;
块不是以分号结束的,是以左括号对应的右括号对应的
-
语句作用域
在条件表达式中定义的变量必须初始化,该条件检验的就是初始化对象的值;
在控制结构中引入的名字是该语句的局部变量,其作用域局限在语句内部,这样做的好处是可以重复使用这些变量名而不必担心它们的当前值在每一次使用时是否正确。对于作用域外的变量,是不可能用到其在作用域内的残留值得;
-
if-else语句
只有单个语句时,不必用花括号括起来;
当有多个if-else时,else匹配最后出现的尚未匹配的if子句
-
switch语句
提供了一种更方便的方法来实现深层嵌套的if/else逻辑;
注意
:程序执行完匹配的case关联的语句,会跨越case边界继续执行其他语句,知道switch结束或遇到break语句为止;default标号:如果所有的case都不匹配,则执行default标号后面的语句;
只能在switch最后一个标号或default标号后面定义变量,为了避免代码跳过变量的定义和初始化的情况
-
while语句
在循环条件中定义的变量在每次循环里都要经历创建和撤销的过程;
利用自增和自减运算符在while循环内的赋值操作很常用
-
for语句
for (init-statement condition; expression) statement; //init-statement(初始化语句)必须是声明语句、表达式语句或空语句,这些语句都以分号结束
谨记在for语句头定义的任何对象只限制在for循环体里可见;
可省略for语句头的某些部分:
- 省略初始化语句:不需要初始化或已经在别处实现过初始化
- 省略condition:等效于循环条件永远为true
- 省略expression:需要利用break或return语句跳出循环,或者在循环体内安排语句修改condition所检查的变量值
-
do-while语句
与while语句不同,do-while语句总是以分号结束;
先执行循环体,在判断条件,所以循环体至少被执行了一次
-
break语句
break只能出现在循环或switch结构中,或者出现在嵌套于循环或switch结构中的语句里
-
continue语句
该语句导致最近的循环语句的当此迭代提前结束
-
goto语句
提供了函数内部的无条件跳转,实现从goto语句跳转到同一函数内某个带标号的语句。不主张使用,goto语句会使得跟踪程序控制流程序变得困难,并且使程序难以理解,也难以修改
-
try块和异常处理
异常机制提供程序中错误检测与错误处理之间的通信。包括:
- throw表达式,错误检测部分使用这种表达式来说明遇到了不可处理的错误,即throw引发了异常条件;
- try块,错误处理部分使用它来处理异常,以try关键字开始,以一个或多个catch子句(处理代码)结束;
- 异常类,用来在throw和相应的catch之间传递有关的错误信息。
异常处理的知识待日后补充
-