C语言——switch 语句的基本格式是什么?

一、问题

C语⾔中有两个构成选择结构的语句,即构成双分⽀的让if..else 语句和构成多分⽀的 switch..case 语句,switch 语句的基本格式是什么?

二、解答

cpp 复制代码
switch (表达式)
{
case 常量表达式 1:
    语句1;
    break;

case 常量表达式 n:
    语句n;
    break;

default:
    语句 n + 1;
}

switch 后的表达式是任意类型的表达式,case 后的常量表达式只能是整型或字符型。 它的执⾏过程是:

先求 switch 后的"表达式"的值。然后在后⾯的多个 case 中查找此值,如果找到相等的,则执⾏下⾯的对应语句,直到遇到⼀个 break 为⽌。如果没有 break 的话,将会执⾏到下⼀个 case下的语句。如果 switch 表达式的计算结果与所有 case 均不相等,则执⾏ default 后的语句。default 也可以没有,即都不相等什么也不执⾏。

cpp 复制代码
脚下留神:
    在 switch 语句中,当找到与 swith 表达式相等的 case 时,执⾏ case 下的语句。
case 下的所有语句都执⾏完成后,如果⼀直没有 break,那么程序将会执⾏到下⼀个 case,
⽽不管它的值是否与 switch 表达式相等,即多个 case 之间不具有天然的互斥性。要想使程
序执⾏完⼀个 case后的语句,⽽不进⼊下⼀个 case,必须使⽤ break 语向,使程序退出 
switch 结构。这样,后⾯的 case 也就不执⾏了。

看以下程序的执⾏结果:

cpp 复制代码
#include <stdio.h>
int main()
{
    int a, b;
    a = 4;
    switch (a % 2)
    {
    case 0:
        b = 10;
    case 1:
        b = 20;
    }
}

以上程序执⾏的结果是20。 4%2 结果是0,应该显示 10 才对呀,怎么会是20呢?原因就在于赋值语句 b=10 执⾏之后,因为没有 break 语句,那就再向下执⾏,进⼊ case 1,再执⾏ b=20,因此最后的结果显示为 20。要想让它能够显示 10,需要在 b=10 的后⾯,case 1 的前⾯加上⼀⾏"break;"(包括分号;),这样就可以得出10了。

三、总结

switch 语句不具备互斥功能,给写程序添加了⼀个⿇烦,即再多写⼀个 break,但它也为多个 case 共⽤⼀组执⾏语句提供了条件。

相关推荐
molunnnn4 小时前
第四章 Agent的几种经典范式
开发语言·python
Aldrich_324 小时前
蓝桥杯嵌入式赛道—-软件篇(GPIO输出模式配置)
c语言·vscode·stm32·单片机·嵌入式硬件·蓝桥杯
洛_尘4 小时前
JAVA EE初阶 2: 多线程-初阶
java·开发语言
@卞5 小时前
C语言常见概念
c语言·开发语言
wjs20245 小时前
Eclipse 关闭项目详解
开发语言
沐知全栈开发5 小时前
《隐藏(Hide)》
开发语言
lkbhua莱克瓦246 小时前
Java基础——方法
java·开发语言·笔记·github·学习方法
catchadmin6 小时前
PHP 依赖管理器 Composer 2.9 发布
开发语言·php·composer
范纹杉想快点毕业6 小时前
《嵌入式开发硬核指南:91问一次讲透底层到架构》
java·开发语言·数据库·单片机·嵌入式硬件·mongodb