`

语句(From:C++Primer)

 
阅读更多

语句

*       简单语句与复杂语句

         -        空语句:;。用在“语法上要求一个语句,而逻辑上不需要”的时候。例如:while(true);

         -        意外出现的多余空语句不会产生编译错误。例如:ival = dval + sval;;

         -        复合语句:由一对花括号括起来的语句序列。复合语句不需要用分号作为结束。也

称为块或语句块。块引入了程序中的局部域。

*       声明语句

        -        C++中,对象的定义(int ival;),被称为声明语句,一般可以被放在程序中任何允许语句出现的地  

                 方。

        -        当把对象放在函数或语句块的开始时:

                1       在函数或语句块的开头处,所有类对象的构造函数均被调用。声明的局部性     能够将初始化

                         的销分摊到函数或语句块中。

                2      通常情况下,在函数或语句块内部的所有程序语句被执行之前,该函数或者语句已经结束  

                        了。如果必须在函数/语句的开头处声明,这将会带来执行一些不必要的构造函数-析构函数

                        对,这将对程序的运行效率产生不必要的影响。

       -        一条声明语句可以由一个或多个对象定义构成。

*       if语句

         -        condition中定义的对象,只在与if相关的语句或语句块中可见。例如:

                   if(int ival = compute_value()) { //可见}

                   // 错误,不可见

                   if(! ival)

*       switch语句

         -       case后面的值必须是一组整数类型的常量表达式。

         -       普遍的误解:只有与被匹配的case标签相关联的语句才被执行。实际上,程序从该点开始执行并

                 继续越过case边界直到switch语句结束。  

         -       在大多数情况下,故意省略break语句的case标签应该提供一条注释,以指明这种省略是故意

                 的。

         -       声明语句也可以被放在switch语句的条件中,声明的变量在整个switch中都是可用的。

         -       声明语句放在casedefault相关联的语句是非法的,除非把它放在一个语句块中。

         -       case不能重复

*       for循环语句

         -        for循环最普遍的用法是遍历一个定长的数据结构,例如:数组、vector等。

         -        init-statement中可以定义多个对象,但只能出现一个声明语句,因此,所有对象必须是相同

                  类

*       while语句

         -        while循环擅长在某个条件保持为真时不停的执行。

*       do while语句

         -        do

                            Statement

                   while(condition);

         -        保证至少执行一次

         -        不像其他循环语句do while循环的条件即condition部分不支持对象定义

*       break语句

         -        终止最近的whiledowhileforswitch语句,程序的执行权被传递给紧接着被终止语句之后的

                  语句

         -        一般来说,break语句只能出现在循环或switch语句中

*       continue语句

         -        结束当前迭代,执行权被传递给条件计算部分。

*       goto语句

         -        从goto语句跳转到同一函数内部某个位置的一个标号语句。

        -         语法:goto label;            // label是用户定义的标识符。标号语句只能用作goto的目标,必须由冒

                  号结束,且标号语句不能紧接在结束右花括号的前面。(可以使用在右花括号前加一个分号解

                  决)

         -        goto语句不能向前跳过没有被语句块包围的声明语句。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics