switch_case 中定义变量报错

2349阅读 0评论2012-09-26 glinuxi
分类:C/C++

   今天在调整代码的时候为了将代码看起来更加整齐,我就把变量的定义放入了一个case中,就方发现报错了。

错误代码:

点击(此处)折叠或打开

  1. #include<iostream> 
  2. int main()
  3. {
  4.   int a =0;
  5.   switch(a)
  6.   {
         case 1:
  7.        int c =8;
  8.        std::cout<<"c="<<c<<std::endl;
  9.        break;
  10.      case 2:
  11.        std::cout<<"a = "<<a<<std::endl;
  12.        break;
  13.        default:
  14.        break;
  15.    }
  16.   return 0;
  17.  }
错误:
 

原因:对于一个变量的作用域是在一个花括号内的( {} ) 的,所以对于以上情况来讲 变量 c 的作用域在于switch 整个括号中,如果 a 的值为 不等于 1 时,对于c 的定义就会跳过,其实我们真正的想法是--
变量 c 只在 case 1 情况下有效,所以在这个范围内加一个花括号。

更正:

点击(此处)折叠或打开

  1. case 1:
  2. {
  3.   int c =8;
  4.   std::cout<<"c="<<c<<std::endl;
  5.   break;
  6.  }

再次编译--通过!




上一篇:cgicc结构分析
下一篇:跨域访问