C语言 switch分支结构

目录

一、switch语句

语法

执行过程 

流程图 

示例 

运行效果

温馨提示

一、switch语句

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查

语法

C 语言中 switch 语句的语法:

switch(expression){
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
  
    /* 您可以有任意数量的 case 语句 */
    default : /* 可选的 */
       statement(s);
}

switch 语句必须遵循下面的规则:

  1. switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型
  2. 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号
  3. case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量
  4. 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止
  5. 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行
  6. 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止
  7. 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的

执行过程 

它的执行过程是:

  1. 首先计算表达式的值,假设为value
  2. 从第一个case开始,比较value 和整型数值1,如果它们相等,就执行冒号后面的所有语句,也就是从语句1一直执行到语句n+1,而不管后面的case是否匹配成功
  3. 如果value 和整型数值1不相等,就跳过冒号后面的语句1,继续比较第二个case、第三个case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设 value和整型数值5相等,那么就会从语句5一直执行到语句n+1
  4. 如果直到最后一个整型数值n都没有找到相等的值,那么就执行default后的语句 n+1
  5. 需要重点强调的是,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句

流程图 

示例 

test19.c

#include <stdio.h>

int main()
{
  int    day=0;   // 定义一个整数变量用于接受键盘输入的数字

  printf("请输入0-6之间的数字:");    // 提示用户输入
  scanf("%d",&day);              // 接受用户从键盘输入的数据

  switch (day)
  {
    case 0:
       printf("星期天\n");
       break;
    case 1: 
       printf("星期一\n");
       break;
    case 2: 
       printf("星期二\n");
       break;
    case 3: 
       printf("星期三\n");
       break;
    case 4:
       printf("星期四\n");
       break;
    case 5:
       printf("星期五\n");
       break;
    case 6:
       printf("星期六\n");
       break;
    default:
       printf("输入错误。\n");
  }
}

运行效果

温馨提示

  switch (result)
  {
    case 10:  printf("..."); break;    // 正确,整数
    case 1+1:  printf("..."); break;    // 正确,表达式1+1==17是整数
    case '5':  printf("..."); break;    // 正确,字符可以转换为整数
    case 'A':  printf("..."); break;    // 正确,字符可以转换为整数
    case 'A'+10:  printf("..."); break;    // 正确,字符可以转换为整数
    case 3.14:  printf("..."); break;    // 错误,不能为小数
    case ii:  printf("..."); break;    // 错误,不能采用变量
  }
  1. case后面必须是整数和字符,或者是结果为整数和字符的表达式,但不能包含任何变量。请看下面的例子
  2. default不是必须的。当没有 default时,如果所有case都匹配失败,那么就什么都不执行

猜你喜欢

转载自blog.csdn.net/XiaoQiu__/article/details/126342326
今日推荐