2025. 3. 30. 19:05ㆍProgramming Language/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이 출력되면서 할당 못했다고 알려줄 것이다.
이렇게 입력을 받으면서도 사용이 가능하다는 점을 알고 있으면 될것 같다.
'Programming Language > C++' 카테고리의 다른 글
Ch06. 복합데이터 - 01. 배열(Array) (0) | 2025.04.01 |
---|---|
Ch05. 흐름제어 - 03. for 문 (자바와 C++이 다른점, 유의점) (0) | 2025.04.01 |
Ch05. 흐름제어 - 01. if 문 (자바와 c++이 다른점, 유의점) (0) | 2025.03.30 |
Ch04. 연산자 - 05. 기타 연산자 (0) | 2025.03.30 |
Ch04. 연산자 - 04. 비트 연산자 (0) | 2025.03.29 |