switch case 语句要注意!!!

c语言中的switch case 语句相比大家也是非常的清楚的。


无论是谁,在编写代码的时候都会用到这个语句的

```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````

现在我就在这里从新说明一下这个switch case 语句,这是在我写代码的时候出现的问题,总结出的几点,如果你遇到了这样的情况,请注意一下就行了。


第一点 :

大家都是知道的,switch case 这个语句的格式,

switch (变量){

case :

语句1

case :

语句2

default:

语句3

}


这是switch case 语句的通用形式了,今天我们就是讨论一下他的这个形式,首先是case 中的break 和 语句问题,

学习过c语言的同学都是知道的要在每一个case 的最后加上一个break语句,就是为了防止他进入下一个case

把下一个case中的语句输出来

例如 :


这样的程序我不用说大家都会明白意思,(这不是废话么) ,关键是重点来了,请问,我没有加break 语句

这个switch case 语句是如何结束的。


(有人又会想,这也是废话) 当然是遇到switch case 后面的括号结束的这个语句,所以我在这里声明一下:


结束一个switch case 语句是有两中结束方式的,第一种是遇到switch case 这个语句的括号,第二种是遇到break

这个语句的。


而且在switch case 这个语句中,一定是遵守 先执行case 的语句,最后执行default 语句的,(写到这里可以有些人

要骂我了)因为我写的这个语句是把default 这个语句放在了最后,如果我把这个语句放在了,case 之前这个程序该如何执行,其实这才是我要说明的重点,如果,放在case 前面还是让你感到不爽的话,可以把这个语句放在case 的中间,就是两个case 语句的中间,之后你在运行这个语句,看这个语句是如何运行的。


这是我改变代码的程序,这个时候我如果输入一个4,他会不会执行default语句,如果我输入一个3,他会不会

执行case 3 : 语句呢,

答案是 : 他都会执行,而且他的顺序就是先执行case 语句,等到case 语句全部执行完了,他在执行default 语句

最后的结束条件是break语句,在网上有很多的资料上写着,default 这个语句的后面是不用加break语句的,但是

现在我告诉你,其实实在switch 中的哪一个分支,后面都要加上break语句的,但是由于一般的写法下,default 后面就是switch 的括号,所以,在default 后面加一个break意义不太大,这样有的人才说,default 后面的break 是加不加

都行,如果想验证我的说法是不是正确的,你只要把上面的代码default 后面的break 去掉,然后输入4,看会不会多输出一些东西来,这样你就会明白了,break 在default的后面是看情况的。






说道了这里,我想大家一定是会对这个switch 语句有了一定的了解,但是我还想给大家接着介绍一种情况,

便是 : case 中的语句,

我说的语句就是进入case 了,之后会在他的下面执行的语句,你自己有没有想过,什么才是一个语句,

什么是一个变量的声明,语句包含一个变量的声明么?

在这里我会用代码验证我测试的结果,



这样的代码在编译的时刻就会出现错误 :

标号只能是语句的一部分,而声明并非语法


在网上有人认为这样就是出现了,在case 中定义了变量,出现的问题,只要在case中加入括号就可以把这个

错误解决掉,而且他还认为由于switch中的case语句在同一个作用域,(因为case语句只是一个标签,他们共属于

一个switch语句块),所以如果在某个case下声明了变量的话,其他的case语句也能看到,这样的话就可能导致错误,例如,在一段代码中的case 1 后面还有一个case2的话,且case 2中使用了case 1定义的变量的话,那么如果运行时,n = 2,swich 直接条转到case 2 内部,这样就出现了 i 还没有初始化的事情了,(变量在声明实在编译阶段,而变量的赋值则在运行时),如果能运行的话,则在case 2中,i没有是一个未知的值,所以编译其直接避免这种事情

发生,就让其编译无法通过。


在最后还要声明一点 , 在switch (num)中的num 是有范围的,只能是字符,短整,长整,整形。。。


























  • 43
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值