IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言】switch语句 -> 正文阅读

[C++知识库]【C语言】switch语句

在开始讲switch语句前呢,想给大家分享一个写代码的一个风格问题。

请看以下代码

int a = 1;
 if(a=5)
  printf("hehe");
 

我们想要的是if(a==5),但是当我们突然手滑忘记加上一个=时,那么就会导致得不到想要的结果,但程序依旧可以正常运行。因此呢,个人建议将常数放在左边,例如。

int a = 1;
if(5==a)
 printf("hehe")

在这种情况下,如果我们不小心少打了一个=号,那么程序会自动报错,组织代码的运行。这的原因是操作数必须赋给左值,5是一个常数,因此不能更改。

switch语句

switch语句本质上也是一种分支语句,常用于多分支的情况。

比如:
输入 1 ,输出星期一
输入 2 ,输出星期二
输入 3 ,输出星期三
输入 4 ,输出星期四
输入 5 ,输出星期五
输入 6 ,输出星期六
输入 7 ,输出星期日
如果使用if-else语句的话,未免太过麻烦。因此我们有了switch语句。
switch ( 整型表达式 )
{
? ? 语句项;
}
switch语句的用法大致就是这样,看着其实就比较简单。
但是之中出现了语句项,语句项是啥呢?

语句项

语句项其实就是一些case语句

case 整形常量表达式:

? ? 语句 ;
注意整形常量十分重要
下面回到switch语句中来
既然了解了大致的switch语句,我们就来写一下switch语句的代码
#include<stdio.h>
int main()
{
 int day = 0;
 scanf("%d",&day);
 switch(day);
 {
  case 1:
  printf("星期一");
  case 2:
  printf("星期二")
  等等等等
 }
 return 0;
}
  

那么在这串代码中,如果我们输入1的话,那么switch语句直接从case1进入,一路畅通无阻到达case7,成功打印了星期一到星期日。输入2的话,就从case2进去.....

那么,怎么让输入几就从哪进去呢?

下面就来到了switch语句中的break

break

当我们在switch语句中加入break

#include <stdio.h>
int main()
{
 ? ?int day = 0;
 ? ?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; }

例如这种情况,那么我们输入什么数字,就能进到单独的哪一个case中而不至于连带后面的case一起打印。

变式

诶,知道了break,那我们就能用switch语句做很多事情了。

例如:

1. 输入 1-5 ,输出的是 “weekday”;
2. 输入 6-7 ,输出 “weekend”
那么,我们就可以用这样的代码来表达
#include<stdio.h>
int main()
{
 int day = 0;
 scanf("%d",&day);
 switch(day)
 {case 1:
 case 2:
 case 3:
 case 4:
 case 5:
 printf("weekday");
 break;
 case 6:
 case 7:
 printf("weekend")
 break;
 }
 return 0;
}
 

break语句 的实际效果是把语句列表划分为不同的分支部分。?

编程好习惯
在最后一个 case 语句的后面加上一条 break 语句。
(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break 语句)

?下面我们来做点练习

#include <stdio.h>
int main()
{
 ? ?int n = 1;
 ? ?int m = 2;
 ? ?switch (n)
 ? {
 ? ?case 1:
 ? ? ? ? ? ?m++;
 ? ?case 2:
 ? ? ? ? ? ?n++;
 ? ?case 3:
 ? ? ? ? ? ?switch (n)
 ? ? ? ? ? {//switch允许嵌套使用
 ? ? ? ? ? ? case 1:
 ? ? ? ? ? ? ? ? ? ?n++;
 ? ? ? ? ? ? case 2:
 ? ? ? ? ? ? ? ? ? ?m++;
 ? ? ? ? ? ? ? ? ? ?n++;
 ? ? ? ? ? ? ? ? ? ?break;
 ? ? ? ? ? }
 ? ?case 4:
 ? ? ? ? ? ?m++;
 ? ? ? ? ? ?break;
 ? ?default:
 ? ? ? ? ? ?break;
 ? }
 ? ?printf("m = %d, n = %d\n", m, n);
 ? ?return 0; }

其实这个练习题还是比较简单的,容易出错的点其实就是镶嵌switch语句中的break了,其实会有人理解为整个switch语句的break,从而停止了case4的运行。但是该break只是停止了镶嵌的switch,不影响整体。所以最后的结果是m=5,n=3。

default语句

如果switch()内的值与所有case的值都不匹配怎么办?

其实也没有太大关系,结果就是跳过了所有case语句而已,而这种语法在C语言中不算错误。

但是如果我并不想忽略所有switch的表达值怎么办?

那么就可以使用default语句

你可以在语句列表中增加一条 default 子句,把下面的标签 ?
default:
写在任何一个 case 标签可以出现的位置。
switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个 switch 语句中只能出现一条 default 子句。
case和default只要满足需求可以随便安排顺序。

总结

switch常用于多分支

switch表达式后的值是几,就能进到case的哪,前面可以不执行

switch可以放多语句项,只想输出一个时,后面放break(跳出)

break跳出自己所在的switch语句

case决定入口,break决定出口,case后也可以用字符

无break不往下滑,要不要加break根据需求

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:05:06  更:2022-09-25 23:05:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:10:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码