c语言switch语句中default是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言switch语句中default是啥意思?相关的知识,希望对你有一定的参考价值。
switch语句是一种在C语言中常用的流程控制语句,用于根据不同的条件执行不同的代码块。这个结构通常包含一个或多个case标签和一个可选的default标签。default标签是switch语句中的一个可选部分,用于在所有case标签都不匹配时执行特定操作。如果在switch语句中没有匹配任何case标签,则会执行default标签相关的操作。default标签相当于if语句中的else部分,它可以执行一些通用的代码操作或者给出一些错误信息。
下面是一个使用switch语句的例子:
Copy code
switch (variable)
case value1:
//执行某些操作
break;
case value2:
//执行某些操作
break;
default:
//执行一些通用操作或者给出错误信息
当switch语句中的变量与value1和value2之一匹配时,将执行相应的操作,否则将执行default标签下的操作。 参考技术A defaul是上面所有选项都不同时,执行的语句。default是默认,缺省的意思。
C语言switch语句的理解
文章目录
一. 基本语法结构
任何具有判定能力的语法结构,都必须具备 判定+分支 功能
在 switch 语法结构中:
- case 完成的判定功能
- break 完成的是分支功能
- default 处理异常情况
举例
根据输入的数字,打印出今天是星期几
int main()
int day = 0;
while (1)
printf("Please Enter Your Day# ");
scanf("%d", &day);
switch (day) //整型常量、变量或整型表达式
case 1:
printf("星期一\\n");
break;
case 2:
printf("星期二\\n");
break;
case 3:
printf("星期三\\n");
break;
case 4:
printf("星期四\\n");
break;
case 5:
printf("星期五\\n");
break;
case 6:
printf("星期六\\n");
break;
case 7:
printf("星期天\\n");
break;
default:
printf("input error\\n");
break;
return 0;
编译运行:
二. 几点补充
补充一:关于 default 分支
每次写 switch 语句时,即使程序真的不需要 default 处理,也应该保留以下语句:
default:
break;
这并非画蛇添足,可以避免让人误以为你忘了 default 处理。而且本来 switch 就适合用在分支较多的情况,最后的 default 也可以方便后续维护代码。
PS:语义上 default 应该放在结尾处,但实际上它可以放在 switch 中的任何地方。
补充二:多条匹配执行同一语句
case 本身是用来进行判断的,当一次判断完成后,其他所有的 case 都将失效(相当于被注释掉),所以当我们想要多条 case 执行同一语句时,可以把这些 case 堆叠在一起。
举例
根据输入的数字,判定今天是周内还是周末
int main()
int day = 0;
while (1)
printf("Please Enter Your Day# ");
scanf("%d", &day);
switch (day)
case 1:
case 2:
case 3:
case 4:
case 5:
printf("周内\\n");
break;
case 6:
case 7:
printf("周末\\n");
break;
default:
printf("input error\\n");
break;
return 0;
编译运行:
补充三:在 case 语句中定义变量的问题
下面代码在 case 语句中定义了一个 n 变量
int main()
switch (7)
case 1:
int n = 10;
break;
default:
break;
return 0;
编译器会报错:
如果我们这样写(在变量定义的地方加上""):
int main()
switch (7)
case 1:
int n = 10;
break;
default:
break;
return 0;
编译器就不会报错,原因如下:
C++编译器考虑了如下的情况:倘若在case 1中定义了一个变量,由于case 1和 default 都在同一个作用域,因此 default 可以调用case 1的变量;如果 default 这样做了,看看会发生什么情况——将会跳过case 1而执行 default,但 default 调用的case 1的变量还没有定义,因此会发生错误!
为了防止这样情况,就需要在case 1中定义变量的部分加上"",以限制变量的作用域(防止被 default 调用),从而防止出错。
假设 default 一定要调用case 1中的变量,那就把这个变量定义成全局变量。
三. 几点建议
建议一:按执行频率排列 case 语句
把最常执行的情况放在前面,而把最不常执行的情况放在后面。这样做有两个好处:
- 最常执行的代码可能也是调试的时候要单步执行最多的代码。如果放在后面的话,找起来可能会比较困难,而放在前面的话,可以很快找到。
- 程序执行运行起来,匹配的时候可以较少次的匹配。
细节二:简化每种情况对应的操作
写 case 时,建议使得与每种情况相关的代码尽可能的精炼。case 语句后面的代码越精炼,case 语句的结果就会越清晰。试想,如果case语句后面的代码整个屏幕都放不下,这样的代码谁也很难看得清晰吧。如果某个 case 语句确实需要这么多的代码来执行某个操作,那可以把这些操作写成一个或几个函数,然后在 case 语句后面调用这些函数就ok了。一般来说,case语句后面的代码尽量不要超过20行。
细节三:将 default 字句只用于检查真正的默认情况
有时候,你只剩下了最后一种情况需要处理,于是就决定把这种情况用default 子句来处理。这样也许会让你偷懒少敲几个字符,但是这却很不明智。因为这样将失去 case 语句的标号所提供的自说明功能,而且也丧失了使用 default 子句处理错误情况的能力。所以最好老老实实地把每一种情况都用case 语句来完成,而把真正默认情况的处理交给 default 子句。
以上是关于c语言switch语句中default是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章