C 语言中的switch语句

原文:https://www.studytonight.com/c/switch-statement-in-c.php

当你想解决多个选项类型的问题时,比如:菜单类程序,每个选项关联一个值,一次只需要选择一个,那么,使用switch语句。

Switch 语句是一个控制语句,它允许我们在众多给定的选项中只选择一个。switch中的表达式计算得出一个整数值,然后将其与不同情况下的值进行比较。它执行与大小写值匹配的代码块。如果没有匹配,则执行默认的块(如果存在)。switch语句的一般形式是,

switch(expression)
{
    case value-1:
        block-1;
        break;
    case value-2:
        block-2;
        break;
    case value-3:
        block-3;
        break;
    case value-4:
        block-4;
           break;
    default:
           default-block;
        break;
}

使用switch语句的规则

  1. 表达式(在 switch 关键字之后)必须产生一个整数值,即该表达式应该是一个整数或一个变量或一个计算结果为整数的表达式。
  2. 案例标签值必须唯一。
  3. 案例标签必须以冒号(:)结尾
  4. 下一行,在情况下语句之后,可以是任何有效的 C 语句。

需要记住的要点

  1. 我们不使用这些表达式来计算 switch case,它可能返回浮点值或字符串或字符。
  2. break statements are used to exit the switch block. It isn't necessary to use break after each block, but if you do not use it, then all the consecutive blocks of code will get executed after the matching block.

    int i = 1;
    switch(i)
    {
        case 1:    
            printf("A");        // No break
        case 2:
            printf("B");        // No break
        case 3:
            printf("C");
            break;
    }
    

    英国广播公司

    输出应该只有 A ,因为只有第一个案例匹配,但是由于在那个块之后没有break语句,接下来的块也被执行,直到它遇到一个break语句或者执行到达switch块的末尾。

  3. 默认案例,当上述案例都不符合switch表达式时执行。默认案例可以放在switch案例中的任何地方。即使我们不包括违约案例,switch的说法也行得通。

  4. 允许嵌套switch语句,这意味着您可以在另一个switch块中拥有switch语句。但是,应该避免嵌套的switch语句,因为它会使程序更加复杂,可读性更差。

switch语句示例

#include<stdio.h>
void main( )
{
    int a, b, c, choice;
    while(choice != 3)
    {
        /* Printing the available options */
        printf("\n 1\. Press 1 for addition");
        printf("\n 2\. Press 2 for subtraction");
        printf("\n Enter your choice");
        /* Taking users input */
        scanf("%d", &choice);

        switch(choice)
        {
            case 1:
                printf("Enter 2 numbers");
                scanf("%d%d", &a, &b);
                c = a + b;
                printf("%d", c);
                break;
            case 2:
                printf("Enter 2 numbers");
                scanf("%d%d", &a, &b);
                c = a - b;
                printf("%d", c);
                break;
            default:
                printf("you have passed a wrong key");
                printf("\n press any key to continue");
        }
    } 
}

switchif的区别

  • [if](decision-making-in-c.php)语句可以评估float条件。switch语句无法评估float条件。
  • if语句可以求值关系运算符。switch语句不能计算关系运算符,即它们在switch语句中是不允许的。