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

空语句:

程序语句最简单的形式是空语句

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

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

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

 

复合语句:

又被称为block()

 

If语句:

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

 

悬垂elsedangling-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-statementcondition 或者 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 语句之前就已经存在。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值