c语言switch case解释,读c语言深度剖析 -- switch case

先说一个现象 有时候在switch中定义变量没有问题,有时候会报错。

百度得知: 基本功不到家.

原来只是加不加括号的区别。

因为C++中变量的作用域是相邻的两个大括号 例子如下

int Val;

switch(Val)

{

case 1:

int i = 1;

break;

case 2:

break;

default:

break;

}

其中case1 后边的变量 i 的作用域是switch的两个大括号

vc6 直接编译出错

error C2360: initialization of 'i' is skipped by 'case' label

: see declaration of 'i'

error C2361: initialization of 'i' is skipped by 'default' label

: see declaration of 'i'

case.exe - 2 error(s), 0 warning(s)

错误很明显 就是 程序 会跳过i的声明 定义语句

解决方法 加个大括号 限制变量的作用域 即可

int Val;

switch(Val)

{

case 1:

{int i = 1;}

break;

case 2:

break;

default:

break;

}

既然有了if、else组合为什么还需要switch、case组合呢?

if、else一般表示两个分支或是嵌套表示少量的分支,但如果分支很多的话……还是用

switch、case组合吧。其基本格式为:

switch(variable)

{

case  Value1:

//program code      (这里的代码尽量不要超过20行。可以写成子函数调子函数)

case后面可以是枚举类型整形,包括bit,int,long。在C++里的话用字符也可以,

字符在内存中是以asc码存放的

比如case 'c',因为字符在内存里是用一个整数来表示的,也就是传说中的ASC码

break;      每个case语句的结尾绝对不要忘了加break

case  Value2:

//program code

break;

case  Value3:

//program code

break;

default:     最后必须使用default分支。即使程序真的不需要default处理,也应该保留

break;把default子句只用于检查真正的默认情况。(别为了少敲代码而使用default做为最后一种情况)

这样将失去case语句的标号所提供的自说明功能,而且也丧失了使用default子句处理错误情况的能力。

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值