C++

[C++] switch문 내부에서 변수 선언시 오류

Makeii 2016. 12. 12. 14:05

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


http://hashcode.co.kr/questions/372/%EC%99%9C-%EC%8A%A4%EC%9C%84%EC%B9%98-%EB%AC%B8%EC%97%90%EC%84%9C%EB%8A%94-%EB%B3%80%EC%88%98%EB%A5%BC-%EC%84%A0%EC%96%B8%ED%95%A0-%EC%88%98-%EC%97%86%EC%96%B4%EC%9A%94