C语言switch史上最详细的讲解

C语言switch史上最详细的讲解原文链接 https github com shellhub blog issues 41C 语言 switch 史上最详细的讲解 switch 语句允许测试变量与值列表的相等性 每个值称之为案例或者 case 程序会检查 switch 后面的值并且与 case 后面的值比对 如果相等则执行后面的代码或代码块语法 switch 在 C 语言中的语法如下 switch expression cas

原文链接

https://github.com/shellhub/blog/issues/41

C语言switch史上最详细的讲解

switch语句允许测试变量与值列表的相等性,每个值称之为案例或者case,程序会检查switch后面的值并且与case后面的值比对,如果相等则执行后面的代码或代码块

语法

switch在C语言中的语法如下

switch(expression) { 
    case constant-expression : statement(s); break; /* optional */ case constant-expression : statement(s); break; /* optional */ /* you can have any number of case statements */ default : /* Optional */ statement(s); } 
  • switch语句中使用的表达式必须具是intenum类型,否则如float等其他数据类型是无法通过的编译的,因为编译器需要switch后面的语句和case后面的值精确匹配,而计算机无法精确表达一个float数据类型
  • switch可以任意个case语句(包括没有), 值和语句之间使用:分隔
  • case后面的值必须是int常量值,或者返回结果为int类型的表达式,以下代码无法编译通过
switch (1) { 
    case 1.1: break; } 
int a; scanf("%d", &a); switch (a) { 
    case a + 1: break; } 
  • switch后面的变量值和case后面的常量值匹配相等后,case后面的代码将会被执行,直到break语句被执行后跳出switch代码块
  • break不是必须的,如果没有break,则执行完当前case的代码块后会继续执行后面case代码块的内容,直到执行break才可以退出
  • switch有一个默认的情况,我们用default关键词表示,当switch后面的变量和所有case后面的常量都不匹配的情况下,默认执行default后面的语句

switch_statement

Example 1

#include  
     int main () { 
    /* local variable definition */ char grade; scanf("%c", &grade); switch(grade) { 
    case 'A' : printf("Excellent!\n" ); break; case 'B' : case 'C' : printf("Well done\n" ); break; case 'D' : printf("You passed\n" ); break; case 'F' : printf("Better try again\n" ); break; default : printf("Invalid grade\n" ); } printf("Your grade is %c\n", grade ); return 0; } 

Example 2

#include 
  
    int main() { printf("Please input your grade(1-100):"); int grade; scanf("%d", &grade); switch (grade / 10) { case 10: case 9: printf("A\n"); break; case 8: case 7: printf("B\n"); break; case 6: case 5: printf("C\n"); break; default: break; } return 0; } 
  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/175830.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午11:19
下一篇 2026年3月26日 下午11:20


相关推荐

  • protostuff java_protostuff

    protostuff java_protostuff软件简介protostuff是一个支持各种格式的一个序列化Java类库,包括JSON、XML、YAML等格式。示例代码:publicclassUserSchemaimplementsSchema{publicbooleanisInitialized(Useruser){returnuser.getEmail()!=null;}publicvoidmergeFrom(In…

    2022年5月2日
    47
  • CSS 故障艺术

    CSS 故障艺术本文的主题是 GlitchArt 故障艺术 什么是故障艺术 我们熟知的抖音的 LOGO 正是故障艺术其中一种表现形式 它有一种魔幻的感觉 看起来具有闪烁 震动的效果 很吸引人眼球 故障艺术它模拟了画面信号出现故障导致成像错误的感觉 青色色块与红色色块无法重合就是这种故障的体现 从胶片时代开始到今天的数码时代 这种故障一直是观众非常熟悉的现象 即使抖音的 LOGO 只是静态的 大脑也会自己

    2026年3月19日
    1
  • Go语言之append函数

    Go语言之append函数append函数的作用官方解释append函数是向slice里面追加一个或多个元素,然后返回一个和slice一样类型的slice,其签名为funcappend(slice[]T,elements…T)[]Tappend所做的是在切片尾添加元素并返回结果。结果需要返回因为,正如我们手写的Append,底层的数组可能更改。使用示例:x:=[]int{1,2

    2022年6月18日
    46
  • C++11特性_object.equals

    C++11特性_object.equalsdecltype与auto关键字一样,用于进行编译时类型推导。decltype实际上有点像auto的反函数,auto可以让你声明一个变量,而decltype则可以从一个变量或表达式中得到类型,例如:intx=3;decltype(x)y=x;有人会问,decltype的实用之处在哪里呢,假如有一个加工产品的函数模板:templatevoidproc

    2025年10月11日
    6
  • 别让Agent编排平台毁了你的AI项目!任务规划+长记忆+MCP——打造真正的企业超级智能体

    别让Agent编排平台毁了你的AI项目!任务规划+长记忆+MCP——打造真正的企业超级智能体

    2026年3月16日
    3
  • C语言 二维数组和指针

    C语言 二维数组和指针二维数组可以看成是元素为一维数组的数组 假设有一个三行四列的二维数组 a 它定义为 inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 a 是二维数组名 a 数组包含 3 行 即 3 个行元素 a 0 a 1 a 2 每个行元素都可以看成含有 4 个元素的一维数组 而且 C 语言规定 a 0 a 1 a 2 分别是这三个一

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号