컴퓨터 프로그래밍/C

C언어 제어문 (switch~case / break / continue)

나노콛 2019. 7. 18. 14:47

지난 편 문제
while을 써서 1에서 100까지 출력

#include <stdio.h>
int main()
{
	int a = 1;

	while (a<=100) {
		printf("%d\n", a);
		a++;
	}
	return 0;
}

 

do while을 써서 50에서 80까지 출력

#include <stdio.h>
int main()
{
	int a = 50;

	do {
		printf("%d\n", a++);
	} while (a < 81);
	return 0;
}

 

for을 써서 100에서 20까지 출력

#include <stdio.h>
int main()
{
	int a;

	for (a = 100; a >= 20; a--) {
		printf("%d\n", a);
	}
	return 0;
}

switch case

 

#include <stdio.h>
int main()
{
  int a = 10;

  switch (a) 
  {
    case 1:
    {
      printf("a==1\n"); break;
    }
    case 5:
    {
      printf("a==5\n"); break;
    }
    case 10:
    {
      printf("a==1\n"); break;
    }
    default:
    {
      printf("default\n"); break;
    }
  }  
	return 0;
}

조건에 맞는 경우에 찾아가는 형태입니다.
switch() 안에는 식이나 값이 올 수 있습니다.
그러나 case에는 상수가 올 수 있고 변수나 실수는 안됩니다.
또한 : 콜론을 쓴다는 것도 유의해야 할 점입니다.

break는 만나면 빠져나온다는 의미입니다.
만약에 위에서 break를 뺀다면
a==10을 출력하고
default까지 출력을 해버립니다.

또한 a를 1로 초기화 한 후 break를 뺀다면

a==1
a==5
a==10
default까지 출력 됩니다.
이런 break의 특징을 잘 확인하시기 바랍니다.


break

#include <stdio.h>
int main()
{
	int a = 1;

	while (a) {
		printf("Test...\n");
		break;
	}
	return 0;
}

while(1)인 경우 무한 루프가 되는데
break를 만나서 1회 출력만 되고 루프문을 빠져나오는 형태입니다.

#include <stdio.h>
int main()
{
	int a = 1;

	while (a)
	{
		if (a>100)
		{
			break;
		}
		printf("a : %d\n", a++);
	}
	return 0;
}

a 가 1부터 100까지 출력 후
a가 101이 되면 if 문이 참이 되면서 break를 만나서 종료되는 형태입니다.


continue

 

#include <stdio.h>
int main()
{
	int a = 1;

	while (a)
	{
		if (a>110)
		{
			printf("break\n");
			break;
		}
		if (a>100)
		{
			a++;
			printf("continue\n");
			continue;
		}
		printf("a : %d\n", a++);
	}
	return 0;
}

1~100 출력 후 a가 101이 될 때
두 번째 if 문이 참이 되므로 a++ 한 후 continue 출력
continue를 만나면 아래를 건너뛰고 다시 while의 조건 검사로 가게 됩니다.
그래서 a가 110 됐을 때 마지막으로 continue를 출력한 후
a가 111이 되면 처음 if 문이 참이 되므로 break를 출력하고
break를 만나면서 반복문을 빠져나오게 됩니다.


그리고 중요한 점은

break
continue
루프 내에서만 사용이 가능합니다.(switch case 예외)