|
여러분은 switch 문을 작성할 때, 각 case가 break 문으로 끝나는 것을 알 수 있다. 만약, break 문을 생략한다면 어떻게 될까? 이때 다음에 위치한 case의 행동이 수행되어 버린다. 4장의 프로그램 5-3-2에서 첫 번째 case에 속한 break를 생략된 경우를 생각해보자. 따라서 switch 문의 각 case의 끝에 break를 빠뜨리지 않도록 주의해야 한다. 마지막 case에는 break가 필요하지 않지만, case가 추가될 것을 대비하여 프로그램 5-3-3처럼 마지막 case에도 break 문을 포함시키는 것이 바람직하다. 여러분은 switch 문을 항상 if-else 체인 구조로 변환하여 작성할 수 있음을 유의하라. 그 반대가 성립한가? 그렇지 않다. switch 문에서 식의 값은 반드시 정수형 타입(integral type)이어야 한다는 사실에 유의해야 한다. 따라서 case의 값도 반드시 정수형 타입이어야 한다. 정수형 타입이란 그 타입의 값을 자연수와 일대일 대응시킬 수 있는 타입을 의미한다. C 언어에서 정수형 타입은 2주차 강의 2.5절에서 다룬 타입 중에서 int, long 그리고 char이다. 그러나 float나 double의 부동 소수점 수 타입은 정수형 타입이 아니다. 이러한 여러분이 알겠지만, 실수는 자연수와 일대일 대응시킬 수 없기 때문이다. 프로그램 5-3-3과 5-3-4에서 n이 float 타입으로 선언되었을 경우에, 프로그램 5-3-3은 여전히 동작하나, 프로그램 5-3-4는 컴파일 오류가 발생한다. 여러분이 이러한 사실을 확인해보기를 바란다.
|
![]() |
|