Ch05. 흐름제어 - 02. switch 문 (자바와 C++이 다른점, 유의점)
switch문에서 자바와 다른점은 switch 문의 () 안에 들어가는 값이 정수형이여야만 한다는 것이다.
자바의 경우는 문자열 같은 것이 들어가도 사용이 가능한데 반면 C++에서는 정수형이 아니면 사용이 불가능하다.
이렇게 결과를 내는데 반면
이렇게 문자열을 넣는 순간 아예 문법적 에러로 확인한다
그렇기 때문에 switch에는 정수로서 인식할 수 있는 타입을 넣어줘야만 한다.
# 추가적으로 모든 언어의 switch문의 경우는 동일하겠지만 switch문의 경우 조건에 맞는 case문을 만나면 그 시점부터 break를 만나기 전까지 모든 문장을 실행시킨다.
그래서 이렇게 코드를 작성했다면 조건이 맞는 case 'a' 이후부터는 조건을 바라보지 않고 그냥 다 실행시킨다.
그래서 보면
이렇게 만들었다면 case 'a'에서 조건이 안맞으니까 실행을 안시키다가 case 'b'에서 조건이 맞으니까 그 때부터 아래의 모든 코드를 조건이 뭐건 간에 실행시켜버린다
이러니까 break라던가 continue라던가의 명령어가 필요한듯 싶다.
또한 if 문처럼 조건절을 넣어서 범위에 대 확인이 불가능하고 꼭 정확한 값이 들어가야만 한다는 것을 알아야한다.
그러면 왜쓰냐..?
성능의 차이가 좀 있다고 하는데 사실 그렇게 차이가 많지 않다고 하고 switch의 경우는 딱 명료하게 가독성이 좋아서 사용하는 경우가 많다고 한다.
물론 여기서도 전에 말했다 싶이 선언을 조건절에 사용이 가능하다.
보통 C언어의 입력 scanf를 사용해서 입력을 받으면서 확인이 가능하다는 점
scanf는 할당된 변수의 갯수를 출력하기 때문에 정상적으로 변수에 할당되면 case 1이, 비정상적일 경우 0이 출력되면서 할당 못했다고 알려줄 것이다.
이렇게 입력을 받으면서도 사용이 가능하다는 점을 알고 있으면 될것 같다.