简单语句
- 空语句
如果在程序的某个地方,语法上需要一条语句,但是逻辑上不需要,此时应该使用空语句。 - 复合语句(块)
复合语句是指用花括号括起来的语句和声明的序列,复合语句也被称作块。一个块就是一个作用域。(语法上需要一条语句,逻辑上需要多条语句)
条件语句
if语句
condition不管是表达式还是变量,其类型都必须能转换成布尔类型。
- 悬垂else
普遍存在于既有if语句又有if else语句中的问题。C++中规定else与离它最近的尚未匹配的if匹配,从而消除了程序的二义性。
switch语句
switch语句提供了一条便利的途径使得我们能在若干固定选项中做出选择。
char c;
int acnt = 0, bcnt = 0;
while(cin >> c) //abcab
{
switch(c)
{
case 'a':
++ acnt;
break;
case 'b':
++ bcnt;
break;
}
}
cout << acnt << ' ' << bcnt << endl; // 2 2
如果表达式和某个case标签的值匹配成功,程序从该标签之后的第一条语句开始执行,直到到达了switch的结尾或者遇到一条break语句为止。
char c;
int acnt = 0, bcnt = 0;
while(cin >> c) //abcab
{
switch(c)
{
case 'a':
++ acnt;
case 'b':
++ bcnt;
break;
}
cout << acnt << ' ' << bcnt << endl;
// 1 1
// 1 2
// 1 2
// 2 3
// 2 4
}
case关键字和他对应的值一起被称为case 标签。case标签必须是整型常量表达式。
case 3.14就是错误的。
任何两个case 标签的值不能相同,否则就会引发错误。另外,default也是一种特殊的标签。
- default 标签
如果没有任何一个标签能匹配上switch 表达式的值,程序将执行紧跟在default 标签后面的语句。即使不准备再default标签下做任何工作,定义一个default标签也是有用的,目的在于告诉读者已经考虑到了默认的情况。
for,while, do while 语句
-
范围for语句的定义来源于与之等价的传统的for语句。
在范围for语句中,预存了end()的值。一旦在序列中添加或者删除元素,end函数的值就可能变得无效。 -
do while先执行语句或者块,后判断条件,所以不允许在条件部分定义变量。
do
statement
while(condition);