아래의 코드를 한 번 생각해 보자. 밑에 실행 결과를 보면 case 60 이라는 결과가 나온다. 왜 그런지 설명할 수 있을까?

[code type=c]#include <stdio.h>

int main(void)
{
 int x = 100;  // x = 10, x = 60, x = 100 일때 모두 테스트 해보면...
 switch(x)
 {
  default:
   if ( x < 50 )
   {
  case 10:
   printf("case 10\n");
  case 20:
   printf("case 20\n");
   }
   else
   {
  case 60:
   printf("case 60\n");
   break;
  case 70:
   printf("case 70\n");
   }
 }

 return 0;
}[/code]

 

실행결과

case 60

---------------------------

위 switch 문은 default 문 부터 시작되므로 항상 이 아래에 있는 내용이 실행된다. 그리고 if 문이 있으므로 x가 100인 경우를 생각해 보면 else 밑에 있는 case 60: 부터 실행된다. default 내부에 실행되는 것이므로 아직 break 문을 만나지 않았으므로 printf("case 60\n")이 실행되고 break 문을 만났으므로 switch 문을 빠져 나오는 것이다. 만약 x가 10인 경우는 출력이 어떻게 될지 한번 생각해 보자

잘 생각해보면 case문은 꼭 label과 비슷하게 작동하는 것을 알 수 있다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
TAG , ,
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/response/119

댓글+트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/response/119

트랙백 주소 :: http://www.cipher.pe.kr/tt/cipher/trackback/119

트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/trackback/119

트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/trackback/119

댓글을 달아 주세요

댓글 RSS 주소 : http://www.cipher.pe.kr/tt/cipher/rss/comment/119
댓글 ATOM 주소 : http://www.cipher.pe.kr/tt/cipher/atom/comment/119
[로그인][오픈아이디란?]