当前位置: 首页 > news >正文

长兴网站建设公司长沙正规制作网站公司

长兴网站建设公司,长沙正规制作网站公司,wordpress页面全屏的插件,盐城工程造价信息网switch 语句 switch语句是一种多路判定语句,它测试表达式是否与一些常量数值中的某一个值匹配,并执行相应的分支动作。 switch (表达式) {case 常量表达式:语句序列case 常量表达式:语句序列default:语句序列 }每一个由case语句表达的分支,…

switch 语句

switch语句是一种多路判定语句,它测试表达式是否与一些常量数值中的某一个值匹配,并执行相应的分支动作。

switch (表达式)
{case 常量表达式:语句序列case 常量表达式:语句序列default:语句序列
}

每一个由case语句表达的分支,都由一个整型常量或常量表达式标记;如果某个分支与表达式的值匹配,则从该分支开始向后执行。

int a = 3;switch (1)
{
case 1:   printf("1\n");      // Ok:1是常量
case 2:   printf("2\n");      // Ok:2是常量
case 'a': printf("'a'\n");    // Ok:'a'是常量
case a:   printf("a\n");      // Error:a是变量
case 1.2: printf("1.2\n");    // Error:1.2不是整型常量
}

当前switch的表达式与 case 1 相匹配,所以整个switch语句从该分支开始执行。注释掉错误语句后,程序的输出结果或许有些意外,虽然程序仅与 case 1 匹配,但后续的case语句序列也被执行了。

在这里插入图片描述

我们可以想像编译器把上面的switch语句翻译成下面的图示:

  • case中的所有标签在前面,语句序列在后面。
  • tag值为1,是switch中表达式的值,与label #1匹配。
  • 然后程序跳转到printf(“1\n”);处执行
  • 完成后继续执行后面的语句
tag(1) ======> label #1: 1 -----------+ 匹配后跳转label #2: 2            |label #3: 'a'          ||printf("1\n")<---------+printf("2\n")          | 向下继续执行printf("'a'\n")        |v

switch语句中case分支表达式不能重复

switch (3 - 2)
{case 1: printf("1\n");  // Ok:常量1case 2: printf("2\n");  // Okcase 1: printf("1\n");  // Error:已经存在常量标签1
}

switch语句可以有一个default语句,用于处理没有匹配到标签的情形。

int a = 'a';
switch (a)
{case 'b':   printf("b");case 'c':   printf("c");default:    printf("default"); // 执行这条语句
}

如果switch语句没有default分支也没有匹配到其他分支,则该switch语句不执行任何动作,所以下面的示例没有任何输出。

int a = 89;
int b = 72;switch (a - b)
{case 15:   printf("15");case 16:   printf("16");
}

switch语句的各分支及default分支的排列次序是任意的

switch (2)
{
case 2:   printf("2\n");
case 1:   printf("1\n");
case 'a': printf("'a'\n");
default:  printf("default\n");
}

输出:

2
1
'a'
default

注意,这里强调的是分支的排列次数,而不是程序执行结果。所以,你也可以这样排序匹配语句:

#include <stdio.h>int main()
{switch (2){default:  printf("default\n");case 'a': printf("'a'\n");case 2:   printf("2\n");case 1:   printf("1\n");}printf("========================\n");switch ('a'){case 2:   printf("2\n");case 'a': printf("'a'\n");default:  printf("default\n");case 1:   printf("1\n");}return 0;
}

在这里插入图片描述

switch语句的一组标签可以共享一段程序流程。下面的程序用于判断字符letter是否为元音字母(这里省略了大写字母的处理),就是运用了这种技巧。不过,由于switch语句在匹配分支后仍会向后执行的原因,程序在匹配元音字母后,仍会输出default分支的信息。

#include <stdio.h>int main()
{char letter = 'a';printf("The letter '%c' is a ", letter);switch (letter){case 'a':case 'e':case 'i':case 'o':case 'u':printf("vowel\n");default:printf("consonant\n");}printf("here...\n");return 0;
}

在这里插入图片描述

break语句

终止switch分支语句向下流动的方法是使用break关键字。当分支执行了break语句后,所属的switch语句将被终止。现在我们使用break语句修复上面的代码让它正确工作。

#include <stdio.h>int main()
{char letter = 'a';printf("The letter '%c' is a ", letter);switch (letter){case 'a':case 'e':case 'i':case 'o':case 'u':printf("vowel\n");break;default:printf("consonant\n");break;}printf("here...\n");return 0;
}

在这里插入图片描述

练习

  1. 编写一个switch语句,让case分支执行多条语句。
  2. 编写一个switch语句,尝试在case中定义变量并随意模拟一些操作,看看程序的表现。
  3. 根据语法规则可以看到,case的语句序列也可是switch语句,尝试编写这样的程序。
  4. 探索一下switch与if语句的有什么异同。
http://www.dtcms.com/a/615886.html

相关文章:

  • 网站设计作业平台软件 项目管理系统
  • 南通网站关键词优化涿州二康
  • 别人做的网站怎么seo优化wordpress4.7安装主题
  • 楚雄网站建设公司网页开发兼职
  • 网站推广开户网络工程师做什么的
  • 【网络工程】修改linux-kali2018-2022版本的ip地址(保姆级图文)
  • 42_FastMCP 2.x 中文文档之FastMCP集成:Auth0 认证指南
  • 做电影网站投资多少钱园区建设网站的方案
  • 米客优品的网站是哪做的wordpress 多梦
  • 武安网站制作了解电商基本知识
  • 住房和城乡建设主管部门网站济南网络科技有限公司有哪些
  • vivo官方网站进入站内优化网站怎么做
  • 如何做php网站政务网站建设云计算中心
  • 东莞阿里网站设计陕西宏远建设集团网站
  • 瀑布流网站后台wordpress配置环境
  • 泉港网站建设推广服务公司微网站建设合同
  • 免费下载ppt模板网站哪个好江苏太平洋建设集团官方网站
  • 上海网站制作怎么样海口发布公众号
  • Spring事务在微服务架构中的实践与挑战
  • 入夏网站建设公司淘宝网络营销案例分析
  • 网站建设设计服务商wordpress添加商品
  • 网站关键词排名软件免费注册域名网站知乎
  • wordpress资讯站模板wordpress添加域名
  • 中升乙源建设工程有限公司网站做网站的项目流程
  • 免费知识库管理系统重庆seo综合优化
  • 网站开发毕设文献我们提供的网站建设
  • 鄂州做网站报价网站服务公司有哪些
  • ThreadPoolExecutor 任务的中断状态是否会影响后续任务
  • 加查网站建设常德地区网站建设
  • 哪个网站网站空间最好传媒类网站模板