switch语句(c)

switch 和 用例 语句帮助控制复杂条件和分支操作。 对一个语句的 switch 语句发送控件在其主体中。

语法

  • select 语句:
    **开关 (表达式)**语句

  • 标记语句:
    用例 常数表达式 : 语句

    默认: 语句

控件传递给 用例常数表达式 匹配 开关 ( *表达式 ***)**的值的语句。 switch 语句中可以包含任意数量的 用例 实例,但是,在同一 switch 语句中的两大小写常数不能具有相同的值。 语句体的开始执行在选定的语句并执行直到该主体的结尾或直到 中断 语句发送控件将体外部。

为 switch 语句中使用通常类似于:

switch表达式 ()

{

   声明 

   .

   .

   .

   用例常数表达式**:** 

      执行的语句,如果表达式等于 

      该常数表达式的值 

      .

      .

      .

      中断; 

   默认:

      执行的语句,如果表达式不等于 

      任何用例常数表达式 

}

可以使用 中断 语句结束处理在 switch 语句中的一个特例和分支到 switch 语句的末尾。 不 中断,程序继续执行下种情况下,执行直到 中断 的语句或语句的末尾为止。 在某些情况下,此继续可能需要的。

,如果 用例常数表达式开关 (表达式),的值不相等 默认 语句中执行。 如果 默认 语句省略,因此,未找到 用例 匹配,在 switch 主体的语句都不会执行。 可以最多具有一个 默认 语句。 默认 语句不需要显示在末尾;它可以显示任何位置于 switch 语句的主体。 用例默认 标签只能出现在 switch 语句中。

switch 表达式用例常数表达式的 类型必须是整数。 每 用例常数表达式的 值必须是唯一的。语句体中。

switch 语句体的 用例默认 标签是唯一重要的定位的初始测试执行了在语句曲线开始。 switch 语句可以嵌套。 所有静态变量在执行到任何 switch 语句之前初始化。

备注

声明可以出现在窗体 switch 主体的复合语句的前面,但是,在声明中包括的初始化不执行。switch 语句发送控件直接对体内的一个可执行语句,而绕过包含初始化的行。

下面的示例演示 switch 语句:

switch( c ) 
{
    case 'A':
        capa++;
    case 'a':
        lettera++;
    default :
        total++;
}

switch 主体的三个语句在此示例中的执行,如果 c 与 'A' 相等,因为 中断 语句不在以下情况前面。 执行控制转移到第一个语句 (capa++;) 并按顺序继续该主体的其余部分。 如果 c 与 'a'相等, lettera 和 total 增加。 ,如果 c 与 'A' 或 'a',不相等仅 total 增加。

switch( i ) 
{
    case -1:
        n++;
        break;
    case 0 :
        z++;
        break;
    case 1 :
        p++;
        break;
}

在此示例中, 中断 语句的后面 switch 主体的每个语句。 ,一个语句之后, 中断 语句强制从语句曲线的退出。 如果 i 等于 – 1,因此,只有 n 增加。 语句后面 n++; 的 中断 导致执行控件通过在语句的外部,跳过其余的语句。 同样,因此,如果 i 是等于 0,因此,只有 z 递增;如果 i 是等于 1,因此,只有 p 增加。 最终 中断 语句不是必需的,因为控件,通过该主体外部在复合语句结束时,,但为了包括在内。

,如下面的示例所示,一个语句可以包含多个 用例 标签:

case 'a' :
case 'b' :
case 'c' :
case 'd' :
case 'e' :
case 'f' :  hexcvt(c);

在此示例中,因此,如果 常数表达式 等于在 'a' 和 'f'之间的任何字母, hexcvt 函数调用。

Microsoft 专用

Microsoft C 不限制用例值的数量。 switch 语句。 该数字仅受可用内存的限制。 ANSI C 在 switch 语句需要至少 257 个 case 标签允许的。

Microsoft C 的默认值为 Microsoft 扩展启用。 使用 /Za 编译器选项来禁用这些扩展。

特定于 Microsoft 的结尾

请参见

参考

switch语句(C++)