다음: 사전 참 조건 반복문, 이전: 홑분기문, 상위 문서: 명령문 [차례][찾아보기]
변수 하나의 값에 기반하여 여러 행동을 취할 일은 매우 흔합니다. if
문으로도 아래처럼 구현할 수 있습니다.
if (X == 1) do_something (); elseif (X == 2) do_something_else (); else do_something_completely_different (); endif
이런 종류의 부호는 만들고 보수하기에 번거롭습니다. 이 문제를 해결하기 위하여 옥타브에는 switch
문이 있습니다. switch
문을
사용하면, 위 예시를 아래처럼 만들 수 있습니다.
switch (X) case 1 do_something (); case 2 do_something_else (); otherwise do_something_completely_different (); endswitch
이 부호로 반복 구조를 더욱 명확하게 하고, 부호를 읽기 좋게 하고, 보수하기 쉽게 합니다. 또한, 변수 X
가
이름을 바꾸어도 조건식마다 이름을 바꾸어야 하는 if
문에 비해 한 줄만 이름을 바꾸면 됩니다.
switch
문의 일반적인 형식입니다.
switch (표현식) case 보람 명령_목록 case 보람 명령_목록 … otherwise 명령_목록 endswitch
보람에는 아무 표현식이나 가능합니다. 그러나 보람을 겹쳐도 효과가 없으며, 처음으로 일치한 보람의
명령_목록만 실행합니다.
switch
문이 의미가 있으려면, 적어도
case 보람 명령_목록
항목이 한 개 있어야 하며, otherwise
명령_목록
은 선택 사항입니다.
보람이 낱칸 배열이고, 낱칸 배열의 아무 원소나 표현식에 맞기만 한다면, 딸린 명령_목록을 실행합니다. 예를 들어, 아래 풀그림은 ‘Variable is either 6 or 7’을 출력합니다.
A = 7; switch (A) case { 6, 7 } printf ("variable is either 6 or 7\n"); otherwise printf ("variable is neither 6 nor 7\n"); endswitch
다른 모든 전용 end
예약어처럼, endswitch
도 end
로
대신할 수 있지만, 전용 예약을 사용하여야 더 명확한 구분이 가능합니다.
if
문과 비교하여 switch
문 사용의 한 이점은 보람에 문자열을 넣을 수
있다는 것입니다.
if
문은 조건식에 문자열을 넣지 못하는 반면
if (X == "a string") # 올바르지 않음
X
와 문자열간의 문자 단위 비교 덕분에 문자열로도 비교할 수 있습니다. switch
문의
특별한 경우이며 아래처럼 풀그림을 짜도 됩니다.
switch (X) case "a string" do_something … endswitch
• C 풀그림사용 안내: |
다음: 사전 참 조건 반복문, 이전: 홑분기문, 상위 문서: 명령문 [차례][찾아보기]