2016-08-05 65 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