아래의 코드를 한 번 생각해 보자. 밑에 실행 결과를 보면 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과 비슷하게 작동하는 것을 알 수 있다.
받은 트랙백이 없고,
댓글이 없습니다.



글
댓글을 달아 주세요
댓글 RSS 주소 : http://www.cipher.pe.kr/tt/cipher/rss/comment/119댓글 ATOM 주소 : http://www.cipher.pe.kr/tt/cipher/atom/comment/119