zoukankan      html  css  js  c++  java
  • ISO/IEC 9899:2011 条款6.8.4——选择语句

    6.8.4 选择语句


    语法

    1、selection-statement:

            if    (    expression    )    statement

            if    (    expression    )    statement    else    statement

            switch    (    expression    )    statement

    语义

    2、一条选择语句在一组语句中选择,依赖于一条控制表达式的值。

    3、一条选择语句是一个语句块,其作用域是其封闭语句块的一个严格的子集。每个相关联的子语句也是一个语句块,其作用域是该选择语句作用域的一个严格子集。


    6.8.4.1 if语句

    约束

    1、一条if语句的控制表达式应该具有标量类型。

    语义

    2、在两种形式下,如果表达式比较不等于0,那么第一个子语句会被执行。在else形式下,如果表达式比较等于0,那么第二条子语句会被执行。如果第一条子语句通过一个标签达到,那么第二条子语句不被执行。

    3、一个else在词法上与之前最近的if相关联,如果该if在语法上被允许。


    6.8.4.2 switch语句

    约束

    1、一条switch语句的控制表达式应该具有整数类型。

    2、如果一条switch语句具有一个相关联的casedefault标签在一个标识符作用域内,该标识符具有一个可变修改类型,那么整个switch语句应该在此标识符的作用域内。[注:即,该声明要么在switch语句前,要么它跟在最后一条case语句或default标签之后,这些标签与switch相关联,在包含该声明的语句块中。]

    3、每个case标签的表达式应该是一个整数常量表达式,并且在同一条switch语句中,任意两个case常量表达式在转换后不应该具有相同值。在一条switch语句中最多可以有一个default标签。(任一封闭的switch语句可以具有一个default标签或case常量表达式,带有复制case常量表达式的值。)

    语义

    4、一条switch语句使得控制跳转到、或跳入、或跳过switch体的语句,依赖于一个控制表达式的值,以及依赖于是否存在一个default标签以及任何case标签的值。一个casedefault标签仅仅在最近的封闭的switch语句内可访问。

    5、整数晋升在控制表达式上执行。在每个case标签上的常量表达式被转换为控制表达式所晋升的类型。如果一个转换后的值匹配被晋升的控制表达式,那么控制跳转到跟在所匹配的case标签后的语句。否则,如果有一个default标签,那么控制跳转到标签语句。如果没有被转换的case常量表达式匹配,并且也没有default标签,那么整个switch体都不被执行。

    实现限制

    6、正如在5.2.4.1所讨论的,实现可以限制一条switch语句中的case值的个数。

    7、例 在以下程序片段中

    switch (expo)
    {
        int i = 4;
        f(i);
    case 0:
        i = 17;
        /* 直通到default代码 */
    default:
        printf("%d
    ", i);
    }

    标识符为i的对象,为自动存储周期(在语句块内),但从未被初始化,因而如果控制表达式具有一个非零值,对printf函数的调用将访问一个中间值。类似的,对函数f的调用无法被到达。

  • 相关阅读:
    WCF Server Console
    Restart IIS With Powershell
    RestartService (recursively)
    Copy Files
    Stopping and Starting Dependent Services
    多线程同步控制 ManualResetEvent AutoResetEvent MSDN
    DTD 简介
    Using Powershell to Copy Files to Remote Computers
    Starting and Stopping Services (IIS 6.0)
    java中的NAN和INFINITY
  • 原文地址:https://www.cnblogs.com/zenny-chen/p/5092933.html
Copyright © 2011-2022 走看看