您的位置:首页 > 编程语言 > C语言/C++

C++Primer学习笔记第六章(6/18)语句

2010-05-03 01:34 393 查看
空语句:

程序语句最简单的形式是空语句
如果在程序的某个地方,语法上需要一个语句,但逻辑上并不需要,此时应该使用空语句。这种用法常见于在循环条件判断部分就能完成全部循环工作的情况。例如,下面程序从输入流中读取数据,在获得某个特殊值前无需作任何操作:

while (cin >> s && s != sought)

; // null statement(使用空语句时应该加上注释)

复合语句:
又被称为block(块)

If语句:
变量类型可以是任何可转换为bool型的类型,这意味着它可以使算术类型或指针类型。

悬垂else(dangling-else):
If语句存在着潜在的二义性,这叫做悬垂else。因此约定将else匹配给最后出现的尚未匹配的if子句。

switch语句:
如果表达式与其中一个 case 标号的值匹配,则程序将从该标号后面的第一个语句开始依次执行各个语句,直到
switch 结束或遇到 break 语句为止。
如果没有发现匹配的 case 标号(并且也没有
default 标号),则程序从 switch 语句后面的第一条继续执行。
在这个程序中,switch 语句是
while 循环体中唯一的语句,于是,switch
语句匹配失败后,将控制流返回给 while 循环条件。
为了安全起见,最好在每个标号后面提供一个 break
语句,即使是最后一个标号也一样。
一个标号不能独立存在,它必须位于语句之前。如果
switch 结构以 default 标号结束,而且 default 分支不需要完成任何任务,那么该标号后面必须有一个空语句。

while语句:
只要条件 condition 的值为 true,执行语句 statement(通常是一个块语句)。condition 不能为空。如果第一次求解
condition 就产生 false 值,则不执行 statement。
int arr1[5]={5,4,3,2,1};
int *source = arr1;

size_t sz = sizeof(arr1)/sizeof(*arr1); // number of elements

int *dest = new int[sz];


while (source != arr1 + sz)
*dest++ = *source++;//简洁的表达方式

for语句:
for (initializer; condition; expression)

statement
for循环的执行顺序:
它的计算顺序如下:

for (vector<string>::size_type ind =
0; ind != svec.size(); ++ind)
{

cout << svec[ind]; // print current element

// if not the last element, print a space to separate from the next one
if (ind + 1 != svec.size())

cout << " ";
}
1.循环开始时,执行一次 init-statement。在这个例子中,定义了 ind,并将它初始化为 0。
2.接着,求解 condition。如果 ind 不等于 svec.size(),则执行 for 循环体。否则,循环结束。如果在第一次循环时,条件就为 flase,则不执行 for 循环体。
3.如果条件为 true,则执行 for 循环体。本例中,for 循环体输出当前元素值,并检验这个元素是否是最后一个。如果不是,则输出一个空格,用于分隔当前元素和下一个元素。
4.最后,求解 expression。本例中,ind 自增 1。
for 语句头中,可以省略 init-statement、condition 或者 expression(表达式)中的任何一个(或全部)
可以在 for 语句的
init-statement 中定义多个对象;但是不管怎么样,该处只能出现一个语句,因此所有的对象必须具有相同的一般类型:

do while语句:
与 while 语句不同。do-while 语句总是以分号结束。且它保证循环体至少执行一次。
string rsp; // used in the condition; can't
be defined inside the do

do {
cout << "please enter two values:
";

int val1, val2;

cin >> val1 >> val2;

cout << "The sum of " << val1 << " and
" << val2

<< " = " << val1 + val2 << "/n/n"

<< "More? [yes][no] ";

cin >> rsp;
} while (!rsp.empty() && rsp[0] !=
'n');
此代码把 rsp 定义在
do 之前而不是在循环体内部。在do while循环条件中引用的变量必须在
do 语句之前就已经存在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: