switch문에서 변수를 선언하여 사용하려 할 경우 변수를 선언하지 않은 다른 case문에서 오류가 발생함
1 2 3 4 5 6 7 | switch (val) { case 1: int newVal = 42; break; case 2: break; } | cs |
case 지정은 switch내 해당하는 label로 점프하기 위하여 사용됨
블록이 시작하면 지역변수를 위한 공간이 메모리에 할당
그러나 val != 1 일 경우 초기화 부분이 실행되지 않는 문제점이 생겨버림
위 코드는 블록이 하나밖에 없는 상태이기 때문
case마다 블록을 지정해주면 다른 case에서 초기화 하지 않아도 됨
1 2 3 4 5 6 7 8 | switch (val) { case 1: { int newVal = 42; break; } case 2: break; } | cs |
'C++' 카테고리의 다른 글
[C++] vector의 resize (0) | 2017.06.02 |
---|---|
[라이브러리] string class 함수 (0) | 2016.03.01 |