learn |
您所在的位置:网站首页 › switch语句使用规则 › learn |
目录 switch 语句的基本理解 case语句的深度理解 case 的作用 case语句的要求 break 的作用 switch case 推荐规则 规则一: 规则二: 小结: switch 语句的基本理解switch是一种控制语句,用于控制程序流程的走向。在 switch 语句中,可以根据表达式的值执行特定的代码块。switch 语句包含一个表达式和多个 case 块。首先会计算表达式的值,然后在 case 块中匹配相应的值。如果匹配成功,则执行该 case 块中的代码,然后跳出 switch 语句。如果所有的 case 块均未匹配成功,则执行默认的代码块。 switch (整型变量 / 常量 / 整型表达式) { case var1: break; case var2: break; case var3: break; default: break; } 接下来我们来看一段代码 //#define _CRT_SECURE_NO_WARNINGS 1 #include #pragma warning(disable:4996) int main() { int day = 0; scanf("%d", &day); //if语句具备两个功能 //1.判断 //2.分支 //switch-case-break也具备这个功能 //但是switc不具备判断和分支的能力,它仅仅做的是拿day的值去进行匹配 switch (day) { case 1://1.判断 printf("星期一!\n"); break;//2.分支 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; } return 0; }这是一个用 C 语言编写的程序。首先,程序使用 `#define` 预处理指令定义了一个宏 `_CRT_SECURE_NO_WARNINGS`,以消除安全问题的警告(scanf)。`#include` 指令包含了 `stdio.h` 头文件,提供了标准输入/输出函数的声明。接着,程序使用 `#pragma` 指令来禁用特定的警告,这里的 `#pragma warning(disable:4996)` 指令是不对 Visual Studio 中的特定警告输出进行编译器检查和编译输出的。 在 `main` 函数中,程序定义了一个整型变量 `day`,并调用 `scanf` 函数读入一个整数,保存到 `day` 中。程序接着使用 `switch` 语句来根据 `day` 的值输出相应的信息。如果 `day` 的值符合任何一个 `case`,则输出特定的字符串,然后使用 `break` 语句跳出 `switch` 语句的执行。如果 `day` 的值都不符合任何一个 `case`,则不会输出任何信息。最后,`main` 函数返回 0 表示程序正常结束。 总的来说,该程序演示了使用 `switch` 语句实现多分支选择的功能,优化了使用多个 `if...else` 语句的代码可读性和可维护性。 case语句的深度理解 case 的作用在C语言中,`case`是一种用于`switch`语句中的一个关键字。`switch`语句可以根据表达式的值来选择执行哪个`case`分支中的语句块。 case本质本质是进行判定功能。 case语句的要求switch(m) && case n //其中m 和 n必须是什么类型变量或者表达式? //case 语句后的值要求是一个常量表达式或者枚举类型或者宏定义 ,即在编译时即可计算出结果的表达式。 //case 语句后面是否可以是const修饰的只读变量呢?不行 #include #include int main() { const int a = 10; switch (a) {//可以 - a是常量 case a: //不行 - error C2051: case 表达式不是常量 printf("hello\n"); break; default: break; } system("pause"); return 0; } 下面这段代码有没有错误呢? case 1: int a = 1; print("%d\n",a); break;
在 C 语言中,case 语句中不能定义新的变量。这是因为在 C 语言中,switch-case 语句的语法规定,case 分支中只能包含语句,不能包含声明语句。 如果需要在 case 分支中使用变量,我们可以应该在 switch 语句前定义该变量,或者在加上定义时加上{},或者封装成函数 1. int a = 1; switch (day) { case 1: printf("%d\n", a); break;2. case 1: { int a = 1; printf("%d\n", a); } break;3. void test() { int a = 1; printf("%d\n", a); } case 1: test(); break; break 的作用在`switch`语句中,`break`用于结束当前分支,跳出整个`switch`语句。 break本质其实是进行分支功能。 如果我们switch语句中没有break会怎么样呢? 这是一段使用了 switch-case 语句的 C 语言代码,功能是根据输入的数字 day(表示星期几)输出相应的星期几的字符串。 先通过 scanf 函数读入 day 的值,然后使用 switch-case 语句进行判断。在 switch 语句中,针对每个可能的 day 值,都有一个对应的 case 分支,分别输出对应的字符串。 需要注意的是,在 case 分支中没有使用 break 语句,这意味着在匹配到某个 case 分支后,会一直往下执行直到遇到下一个 break 或者 switch 语句结束。因此,如果输入的 day 为 5,输出的不仅是“星期五!”还包括后面的“星期六!”、“星期天!”,然后 switch 语句才结束。 总结:每个`case`分支的最后一条语句必须是`break`语句,否则程序将继续执行下一个分支的代码,直到遇到`break`语句或`switch`语句结束为止。 switch case 推荐规则 规则一:如果我们想周一到周五打印“工作日”,周六到周日打印“休息日”该怎么做呢? #include #pragma warning(disable:4996) int main() { int day = 0; 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; } return 0; }上面的这种写法虽然可行,但是重复的语句比较多,此时我们可以换一种写法。 #include #pragma warning(disable:4996) int main() { int day = 0; 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; } return 0; }总结:如果多个不同case匹配,想执行同一个语句,我们就可以省区前面的case语句,只保留最后一个case语句。 规则二:在上面的程序当中,如果我们输入1-7以外的任何数,程序都没有运行结果,那么当用户使用该代码的时候,其代码的体验感是非常不足的,因为你输入1-7以外的任何数,程序没有报错,用户也不清楚要输入什么,以及提示什么错误。所以我们要改进一下上面的代码。 #include #pragma warning(disable:4996) int main() { int day = 0; 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("你输入的值有误!\n"); } return 0; }总结:default 是一个关键字,用于 switch-case 语句结构中的 "缺省(默认)" 分支。default 分支表示当所有的 case 分支都不匹配时,执行的代码。需要注意的是,default 分支可以放在 switch 语句的任何位置。但通常情况下,建议将 default 分支放到 switch 语句的最后面,以便于更好地理解代码的逻辑。 小结:1.switch语句中,case完成判断功能,break完成分支功能,default完成处理异常情况。 2.case 表达式: 语句; 2.1.如果表达式和语句是一对多的关系(case有多条语句),此时不能再case中定义 变量,如果需要,使用函数或{}或在switch外定义该变量。 2.2.如果表达式和语句是多对一的关系,此时建议在执行相同语句的case后省区break 语句,只需最后一个保留即可。 3.default可以出现在switch内的任何地方,建议放在末尾。 4.case :表达式必须在编译的时候就能转化为值,可以是宏,但是const修饰的变量不可以。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |