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

'C++' 카테고리의 다른 글

[C++] vector의 resize  (0) 2017.06.02
[라이브러리] string class 함수  (0) 2016.03.01

+ Recent posts