2016-08-05 59 views
2

我知道很多关于这个主题的问题stackoverflow,但我没有找到答案。C++在switch语句中定义变量 - 用/不用初始化定义

struct message 
{ 
    int myint; 
}; 

int main(void) 
{ 
    switch(1) 
    { 
    case 0: 
     break; 
    case 1: 
     int i; // this is fine, but int i = 10; is compile error 
     break; 
    default: 
     break; 
    } 
    return 0; 
} 

从逻辑上讲,为什么定义变量并用某个值初始化它与为'case labels'定义变量不同?

+2

在右边的相关章节的第二个问题:http://stackoverflow.com/questions/92396/why-cant-variables-be-declare-in-a-switch-statement?rq = 1 – chris

+0

@chris,有趣的帖子。顺便说一句,它回答了为什么简单的'我我;'工程?我读了前几个高票答案,但找不到明确的解释。 – iammilind

+0

@iammilind,是的,因为没有初始化被跳过。 [这个答案](http://stackoverflow.com/a/92730/962089)更进一步。 – chris

回答

1

要定义在C开关语句中的变量++你需要使用大括号:

int main(void) 
{ 
    switch(1) 
    { 
    case 0: 
     break; 
    case 1: 
    { //added brace 
     int i=10; 
     break; 
    } //added brace 
    default: 
     break; 
    } 
    return 0; 
} 

here the link to C++ shell

+1

我知道它的工作原理,但那不是我的问题。 – PnotNP

相关问题