第五章 语句
5.1 简单语句
C++语言中的大多数语句都以分号结束,一个表达式末尾加上分号就变成了表达式语句。
- 空语句 :最简单的语句是空语句,空语句中只包含一个单独的分号。
- 别漏写分号,也别多写分号
iVal=v1+v2;; //正确: 第二个分号表示一条多余的空语句
//出现糟糕的情况:额外的分号,循环体是那条空语句
while(iter!=svec.end()); //递增运算符属于循环体的一部分
++iter;
- 符合语句(块)
5.2 语句作用域
作用域这块在前面已经介绍过,个人理解最重要。
5.3 条件语句
5.3.1 if语句
- if语句 作用是:判断一个指定的条件是否为真,根据判断结果决定是否执行另外一条语句。
- 一种包含else分支
if(condition)
{
statement;
} - 一种不包含else分支
if(condition)
{
statement;
}
else
{
statement2;
}
- 一种包含else分支
string lettergrade;
if(grade<60)
{
lettergrade=scores[0];
}
else
{
lettergrade=scores[(grade-50)/10];
}
5.3.2 switch语句
- switch语句提供了一条便利的途径使得能够在若干固定选项中做出选择。
unsigned aCnt=0,eCnt=0,iCnt=0,oCnt=0,uCnt=0;
char ch;
while(cin>>ch)
{
switch(ch)
{
case 'a':
++aCnt;
break; //break不能省略 break是跳出的意思,不在执行包含在switch下面的语句
case 'e':
++eCnt;
break;
case 'i':
++iCnt;
break;
case 'o':
++oCnt;
break;
case 'u':
++uCnt;
break;
default: //除了上面的情况,默认的情况都用default中的语句处理
break;
}
}
例子说明一切
5.4 迭代语句
5.4.1 while语句
- 使用while循环:当不确定到底要迭代多少次时,使用while循环比较合适。
vector<int> iVector;
int i;
//重复读入数据
while(cin>>i)
{
iVector.push_back(i);
}
5.4.2 传统的for语句
- 传统的for语句
//传统for语句
for(int i=0;i<100;i++)
{
cout<<i<<endl;
}
- 传统for语句循环的执行流程
- 循环开始时,首先执行一次init-statement。上例中执行 定义 i 并初始化为0。
- 接下来判断condition。上例中判断 i 是否能使 i<100 条件为true
- 如果condition为真,执行循环体;如果condition为假,则结束。上例中输出 i 值
- 最后执行expression。 上例中 i的值加1。
- for语句头中的多重定义
for(decltype(v.size) i=0,sz=v.size();i!=sz;++i)
{
v.push_back(v[i]);
}
- 省略for语句头的某些部分
for(;;)
for(int i=0;i<100;)
for(;i<30;i++)
for(int i=0;;i++)
5.4.4 do while语句
do while语句 和while 语句非常相似,唯一的区别是 do while语句先执行循环体后检查条件。至少执行一次循环。
5.5 调整语句
C++语言中提供了4中调整语句: break、continue、goto、return。
5.5.1 break语句
break 语句 负责终止离它最近的while、do while、for或switch语句,并从这些语句之后的第一条语句开始继续执行。
5.5.2 continue语句
continue语句 终止最近的循环中的当前迭代并理解开始下一次迭代。 只出现在 for、while、do while循环的内部。
5.5.3 goto语句
goto语句 的作用是从goto 语句无条件跳转到同一函数内的另一条语句。
不要在程序中使用goto语句,因为它使得程序既难理解又难修改。
5.6 try语句块和异常处理
异常是指存在于运行时的反常行为,这些行为超出了函数正常功能的范围。
- 异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持。
- throw表达式 异常检测部分使用throw表达式来表示它遇到了无法处理的问题。我们说throw引发了异常。
- try语句块 异常处理部分使用try语句块处理异常,并以一个或多个catch子句结束。
- 一套异常类 用于在throw表达式和相关的catch子句之间传递异常的具体信息。
本章感觉学了很多东西,又感觉没有什么东西,可是后面用的全是这些东西。