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 共⽤⼀组执⾏语句提供了条件。

相关推荐
神仙别闹6 小时前
基于 C++ 实现(控制台)学生成绩管理系统
开发语言·c++
伞伞悦读6 小时前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
free-elcmacom8 小时前
C语言字符指针与字符串字面量——从一道“剑指 Offer”笔试题说起
c语言·visual studio
2601_966949659 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
m0_734571769 小时前
深入理解5g <十八>传输块tbsize的计算
开发语言·5g
RAN114267600811 小时前
1.3第一个程序的介绍
开发语言·qt
blue_ice .11 小时前
Verilog DDS 数字信号发生器:DAC 输出模拟波形与 ADC 回采观测
开发语言·单片机·嵌入式硬件·fpga开发
远翔调光芯片^1382879887212 小时前
ECP5702能芯科技PD取电芯片在市场上的优势有哪些?
开发语言·人工智能·单片机·嵌入式硬件·智能家居
泡海椒12 小时前
规则引擎对比:JQuick-Java vs Drools 轻量场景选型对比
java·开发语言
泡泡鱼(敲代码中)13 小时前
Python 容器类型学习笔记:列表、元组、字典、集合
开发语言·笔记·python·pycharm