는 foo
는 int
이고,이 C 코드를 생각해 foo
의 다른 값에 대한선언은
switch(foo){
case 1: {
int bla = 255;
case 2:
printf("case12 %d\n", bla);
break;
case 3:
printf("case3 %d\n", bla);
}
};
코드는 다음과 같은 출력을 제공합니다
case12 255 # foo=1
case12 255 # foo=2
case3 0 # foo=3
나는 문제의 이해를 foo=3
. bla
을 선언하고 해당 값을 정의하는 행은 foo=3
일 때 실행해서는 안됩니다. switch 문은 case 3:
의 레이블로 바로 이동해야합니다. 아직 경고가 없으므로 bla
은 적어도 선언 된 것 같습니다. 그것은 초기화되지 않은 사용할 수 있습니다 그리고 그 값은 단지 0
, 그래도 발생합니다. "사례 3"에서 어떤 일이 일어나고 있으며 이것이 합법적 인 C 코드인지 설명해 주시겠습니까?
당신 돈 ' 마지막'}'다음에 세미콜론이 필요합니다. –
이상하게도 GCC는 (경고와 함께) C 모드에서 코드를 허용하지만 C++ 모드에서는 거부합니다. – HolyBlackCat
이상한게 아니예요 : http://stackoverflow.com/questions/92396/why-cant-variables-be-declared-in-a-switch-statement?rq=1 – melpomene