2013-05-02

C/C++ 语言 switch-case 后面的花括号

Views: 20041 | 1 Comment

C/C++ 语言的 switch-case 语句中常见下面两种风格的代码, 一种在 case 后面加了花括号, 而另一种不加. 这似乎仅仅是编程风格的不同, 但事实上, 两种写法有作用域方面的考虑.

// style A
switch(c){
    case 1:
        //
        break;
}

// style B
switch(c){
    case 1:
        {
            //
        }
        break;
}

在 C/C++ 语言中, 被花括号包围的代码运行在一个新的作用域内, 当然也继承之前的作用域. 所以在花括号内定义的变量, 在外面是不可用的. 所以, 当在不同的 case 里定义了同名的变量, 不加花括号将会导致变量 redeclaration 错误.

// 错误!
switch(c){
    case 1:
        int a;
        break;
    case 2:
        int a; // a redeclared
        break;
}

// OK
switch(c){
    case 1:
        {
            int a;
        }
        break;
   case 2:
        {
            int a;
        }
        break;
}

Related posts:

  1. PHP 解码 C 字符串
  2. 一种有趣的编程模型
  3. PHP的continue 2
  4. Redis 导数据的 PHP 脚本
  5. LevelDB Seek() 特别慢的场景
Posted by ideawu at 2013-05-02 11:44:35

One Response to "C/C++ 语言 switch-case 后面的花括号"

Leave a Comment