C语言还为多分支选择提供了另一个switch语句,其一般形式为:

开关(表达式){

案例常量表达式1: 语句1;

案例常量表达式2: 语句2;

...

条件常量表达式n: 语句n;

默认值: 语句n + 1;

}

语义是: 计算表达式的值. 将其与后续常量表达式的值一一比较. 当表达式的值等于常量表达式的值时,将执行后续语句,然后不进行判断,并且在个案之后的所有后续语句将继续. 如果在所有情况下表达式的值都与常量表达式不同,则执行default之后的语句.

[示例4-9]

#include

int main(void){

int a;

printf("input integer number: ");

scanf("%d",&a);

switch (a){

case 1:printf("Monday\n");

case 2:printf("Tuesday\n");

case 3:printf("Wednesday\n");

case 4:printf("Thursday\n");

case 5:printf("Friday\n");

case 6:printf("Saturday\n");

case 7:printf("Sunday\n");

default:printf("error\n");

}

return 0;

}

此程序需要输入数字并输出英语单词. 但是在输入3之后,将执行情况3及以后的所有句子c语言 switch语句,并输出星期三及以后的所有单词. 这当然是不希望的. 为什么会这样?这仅反映了switch语句的功能. 在switch语句中,“ case constant expression”仅等效于一条语句标签. 如果表达式的值等于标签,则执行将被重定向到该标签,但是在执行label语句后无法自动跳出整个switch语句,因此似乎继续执行所有后续case语句. 这与之前介绍的if语句完全不同,因此应特别注意.

为避免上述情况,C语言还提供了一个break语句,专用于跳出switch语句. break语句仅具有关键字break,没有参数. 稍后将详细介绍. 修改示例程序,在每个case语句之后添加一个break语句c语言 switch语句,以便在每次执行后可以跳出switch语句,以避免输出意外结果.

[示例4-10]

#include

int main(void){

int a;

printf("input integer number: ");

scanf("%d",&a);

switch (a){

case 1:printf("Monday\n"); break;

case 2:printf("Tuesday\n"); break;

case 3:printf("Wednesday\n"); break;

case 4:printf("Thursday\n"); break;

case 5:printf("Friday\n"); break;

case 6:printf("Saturday\n"); break;

case 7:printf("Sunday\n"); break;

default:printf("error\n");

}

return 0;

}

使用switch语句时,还应注意以下几点: 大小写之后的每个常量表达式的值不能相同,否则会发生错误. 在这种情况下,允许使用多个语句,可以将其括在{}中. 可以更改case和default子句的顺序,而不会影响程序执行结果. 默认子句可以省略.

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-286614-1.html

c语言 switch错误用法,C语言switch语句的详细用法相关推荐

  1. c语言编译错误 原文,C语言常见错误与警告

    C语言常见错误与警告 C语言常见错误与警告C语言常见错误: 1 invalid type argument of '->' (have 'struct qstr_xid_element') 这种 ...

  2. 利用c语言设置密码错误循环,c语言运算符优先级与while循环案例

    sizeof可以获取数据类型的内存中的大小(字节) #include #include // standared 标准 // input output 输入/输出 // header 头 .h头文件 ...

  3. linux中chmod命令的用法,【linux】chmod命令详细用法

    功能说明: 变更文件或目录的权限 u:User,即文件或目录的拥有者. g:Group,即文件或目录的所属群组. o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围. a:Al ...

  4. c语言scanf错误c4996,C语言杂谈(一)scanf()、scanf_s()与错误 C4996

    错误 C4996 初学C语言时,第一个接触到的I/O函数便是scanf()了.但在高版本的 Visual Studio (包括但不限于2015.2013.2012)编译代码时,却会出现意想不到的错误. ...

  5. c语言中错误executing,C语言编程中常见问题解读.doc

    C语言编程中常见问题解读 为什么vc6打开的文件却不能编译1 为什么一个vc6工程中有两个main函数不能编译成功?我想写两个程序怎么办?2 为什么v6不能编译程序,生成信息说compile和link ...

  6. c语言scanf错误c4996,C语言常见错误杂谈(一)scanf()、scanf_s()与错误 C4996与解决方法...

    错误 C4996 初学C语言时,第一个接触到的I/O函数便是scanf()了.但在高版本的 Visual Studio (包括但不限于2015.2013.2012)编译代码时,却会出现意想不到的错误. ...

  7. c语言scanf错误c4996,C语言杂谈(一)scanf()、scanf_s()与错误 C4996(示例代码)

    错误 C4996 初学C语言时,第一个接触到的I/O函数便是scanf()了.但在高版本的 Visual Studio (包括但不限于2015.2013.2012)编译代码时,却会出现意想不到的错误. ...

  8. C语言C6292错误,测试c语言函数调用性能因素

    标签: 函数调用:即调用函数调用被调用函数,调用函数压栈,被调用函数执行,调用函数出栈,调用函数继续执行的一个看似简单的过程,系统底层却做了大量操作. 操作: 1,               调用函 ...

  9. 飞机订票系统c语言常见错误,编写C语言:飞机订票系统

    满意答案 wukong828 2013.06.16 采纳率:46%    等级:12 已帮助:10888人 #include #include #include //#include #define ...

  10. C语言--gets、puts、scanf、printf函数详细用法与区别(小白也能看懂,看不懂私信骂我)

    目录 一.前言 二.函数  gets().scanf() 深度解析 (1)头文件 (2)scanf()函数 (3)gets()函数 重点:(4) gets(a); 与 scanf("%s&q ...

最新文章

  1. SQL2K数据库开发二十三之索引操作重建索引
  2. Android targetSdkVersion 原理
  3. php 编译错误,PHP 编译错误及解决办法
  4. The 5th Zhejiang Provincial Collegiate Programming Contest------ProblemK:Kinds of Fuwas
  5. SQL查询最大值,返回整行数据
  6. python3 beautifulsoup 表格,使用Python中的BeautifulSoup拉取特定的表数据
  7. 缩点【洛谷P1262】 间谍网络
  8. gnss观测质量检查软件下载_【速查】你可能下载了个假“北斗”!
  9. fetch与axios
  10. PKM全民推广系列三:PKM搜索
  11. 继电器和蜂鸣器的使用
  12. k8s mysql 弹性_k8s 弹性伸缩,基于prometheus自定义指标
  13. usb3.0传输速度测试软件,Win10系统如何测试usb3.0设备传输速度
  14. 王家林Spark视频
  15. UnityC# MD5验证
  16. docker 自动签到模板制作
  17. python 降序排列
  18. PIL+pyqt 写了一个图片批量无损压缩工具python
  19. Day7 零基础python入门100天Udemy训练营-Hangman Game 继续学习import, if else, while loop, for loop
  20. mysql 距离计算排序

热门文章

  1. LNMP 平台的 redis 对接安装
  2. Jump视频实时抠图和语音降噪
  3. PowerBI软件的power query编辑栏和高级编辑器中文显示乱码解决办法
  4. 使用VAE(变分自动编码器),来预测用户流失.
  5. python3 爬取半次元cosplay图片
  6. 小猪的Python学习之旅 —— 12.Python并发之queue模块
  7. 随便举个例子,说明单线程比多线程编程提高性能
  8. 高斯分布估计子的性能与克拉默劳下界的讨论
  9. 小米6内存测试软件,小米6采用的是eMMC还是UFS2.1?来测试一下吧
  10. HDU 2000 Java 奇怪的jio