8.读c语言深度剖析 -- switch case

 先说一个现象 有时候在switch中定义变量没有问题,有时候会报错。
  
百度得知基本功不到家.
  
原来只是加不加括号的区别。
  
因为C++中变量的作用域是相邻的两个大括号 例子如下
  int Val;
  switch(Val)
{
  case 1:
   int i = 1;
  break;
  case 2:
  break;
  default:
   break;
}
其中case1 后边的变量的作用域是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;
}

 

既然有了ifelse组合为什么还需要switchcase组合呢?

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

switchcase组合吧。其基本格式为:

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子句处理错误情况的能力。

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值