

c语言入门8,它是if/else语句的亲戚,switch语句介绍
source link: https://blog.popkx.com/introduction-to-c-language-8-it-is-a-relative-of-if-else-statement-switch-statement-introduction/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

c语言入门8,它是if/else语句的亲戚,switch语句介绍
经过前面两节的学习,相信对 if/else 以及布尔代数有了比较深入的认识,可以对现实世界中的复杂问题,分情况处理了。事实上,在 C 语言中,还有一种分支语句,就是 switch 语句,在介绍它之前,先来考虑这个问题:
输入 1-7 七个数,程序要对应着分别打印出 Monday-Sunday(星期一到星期天)。
这样的问题,用 if/else 语句非常容易解决,请看如下代码:
#include <stdio.h>
void print_day(int day)
{
if(1==day)
printf("Monday\n");
else if(2==day)
printf("Tuesday\n");
// ...
else if(7==day)
printf("Sunday");
else
printf("error\n");
}
int main()
{
print_day(2);
return 0;
}
以上代码很好的解决了问题,不过用 switch 语句也是能够非常简单的解决问题,switch 语句可以产生具有多个分支的控制流程,它的格式是:
switch(控制表达式) {
case 常量表达式:语句序列
case 常量表达式:语句序列
default:语句序列
}
下面用 switch 语句解决上述问题,请看如下代码:
#include <stdio.h>
void print_day(int day)
{
switch(day){
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");
break;
}
}
int main()
{
print_day(2);
return 0;
}
上面的例子我们传给 print_day 的参数是 2,所以从“情况2”(case 2) 处开始执行,然后打印 “Tuesday”,接着 break。break 是 C 语言中的关键字,它的作用是挑出整个 switch 语句块。C 语言规定各 case 的常量表达式必须互不相同,各 case 均不等于常量表达式,则进入 default 分支。
使用switch语句要注意几点:
- case 后面跟的必须是常量表达式,因为这个值必须在编译时计算出来。
- case 后面跟的常量表达式的值必须是整型,因为浮点型是不能精确比较相等不相等的,整型或字符型则可以,这是由不同类型数据的存储方式决定的。
- 进入case后如果没有遇到break语句就会一直往下执行,后面其它case或default下面的语句也会被执行到,直到遇到break,或者执行到整个switch语句块的末尾。
通常每个case后面都要加上break语句,但有时候故意不加break来利用这个特性,例如:
#include <stdio.h>
void print_day(int day)
{
switch(day){
case 1:
case 2:
case 3:
case 4:
case 5:
printf("Weekday\n");
break;
case 6:
case 7:
printf("Weekend\n");
break;
default:
printf("error\n");
break;
}
}
int main()
{
print_day(2);
return 0;
}
这样一来,输入 1-5 都会输出“Weekday”(工作日),输入6、7则会输出“Weekend”(周末)。
switch语句不是必不可缺的,显然可以用一组if..else if...else if...else代替,但是一方面用switch语句会使代码更清晰,另一方面,有时候编译器会对switch语句进行整体优化,使它比等价的if/else语句所生成的目标代码效率更高。
阅读更多: C语言
Recommend
-
31
Scratch Scratch是麻省理工媒体实验室终身幼稚园组开发的一套电脑程序开发平台,旨在让程序设计语言初学者不需先学习语言语法便能设计产品。开发者期望通过学习Scratch,启发和激励用户在愉快的环境下经由操作(如设计交互故事...
-
10
上一节基于一个简单的实例讨论了C++语言中的虚函数,我们提到了“动态绑定”这个词,大意就是动态...
-
16
还记得刚开始接触 C 语言的时候,为了描述一个平行四边形的边长和对角线长,我定义了四个变量:短边长 a,长边长 b,对角线1长 d1,对角线2长 d2。在写代码的过程中,发现又要定义一个平行四边形,于是我不得不又定义了四个变量:a2,b2,d12,d22,结果变量又...
-
12
c语言入门11,循环语句一大家和它的管家,其他循环语句和break,continue 发表于...
-
3
1.1 Go语言从入门到精通:Go语言介绍 “Go will be the server language of the future.” — Tobias Lütke, Shopify 在过去几年,崛起了一门新的语言:Go 或者 GoLang。没有什么比一门新的编程语言更令开发者兴奋...
-
3
🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 阿里云星级博主~掘金⇿InfoQ~51CTOP创...
-
5
C#语言async, await 简单介绍与实例(入门级) ...
-
7
go 流程控制之switch 语句介绍 一、switch语句介绍 1.1 认识 switch 语句 我们先通过一个例子来直观地感受一下 switch 语句的优点。在...
-
2
译:大型语言模型入门介绍 2023-12-04 技术 ...
-
4
出于对AI技术的兴趣,我开始关注AI背后的技术研究内容,对于产品经理来说,及时介入新技术非常有必要,我会把输出文章作为“费曼学习法”的基础,除了督促我自己对这些技术深度理解,更希望我能将这些较为前沿甚至晦涩的技术内容更通俗地介绍给大家。
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK