C언어 프로그래밍, C언어 기초 문법 

조건문(Conditional)

 

조건문은 주어진 조건에 따라 프로그램의 흐름을 바꾸고, 주어진 조건에 만족할 때 수행하는 ‘제어문’이다.

C언어에서 조건문은 2가지 형태로  사용한다.

 

1.if

 

if문은 가장 대표적인 조건문이다. if문의 기본 문법은 다음과 같다.

 

if(조건문){
	실행문1;
	실행문2;
}

 

 

조건식의 결과가 참(True)이면 중괄호 내부의 실행문들이 실행된다. 만약 조건식의 결과가 거짓(False)이면 실행문을 실행하지 않고 중괄호 밖의 다음으로 넘어간다. 조건식은 보통 비교 연산자를 사용해서 참, 거짓을 판별하는 경우가 많다. 그리고 조건식에 특별한 연산자 없이 숫자만 사용할 경우, 0(거짓)이 아닌 음수를 포함한 모든 숫자는 참으로 간주해서 수행문을 수행한다.

 

 

 

 

2. if~else문

 

 

조건식이 여려 경우일 때 if~else문을 이용할 수 있다. 다음과 같이 사용한다.

 

if ( 조건식1 )
{
	수행문1;  // 조건식1이 참일 경우 수행문1 실행
}
else if ( 조건식2 )
{
	수행문2; // 조건식1이 거짓이고, 조건식2가 참일 경우 수행문2 실행
}
else
{
	수행문3; // 조건식 1,2가 모두 거짓일 때 수행문3 실행
}

 

 

if문의 조건식1이 참이면 수행문 1을 수행하고 끝이 나고, 거짓이면 else if문의 조건식 2로 넘어간다. 만약 조건식 2가 참이면 수행문 2를 수행하고 조건문을 빠져나가며, 거짓이면 else문의 수행문 3을 수행 후 조건문을 빠져나간다.

else if문의 사용 수 는 제한이 없으며 조건의 수에 따라 결정하면 된다. else문은 조건식을 적지 않으며, 위의 모든 조건식들을 만족하지 않을 시 수행문을 수행하는 역할을 한다.

 

참고로, if문에서 수행문이 한 줄일 경우 중괄호를 사용하지 않아도 된다. 하지만 코드가 길어질 경우 수정 작업이 힘들어진다. 따라서 중괄호를 하는 습관을 들이는 것이 좋다.

 

 

 

3. switch~case문

 

하나의 조건으로 많은 경우의 수를 처리하고자 할 때 사용한다. switch의 조건식 결과는 ‘정수’만을 허용한다.(반드시 연산이 가능해야 한다) 그리고 case문의 값은 ‘정수 상수’만 가능하며 중복이 불가능하다. 이 구문에서 가장 중요한 것 중 하나가 바로 ‘break'다. break는 스위치 문을 빠져나가게 하는 기능을 가지고 있다. 만약 case를 만족하고 수행을 했는데, break가 없다면 그 아래 있는 모든 case는 만족한 것으로 간주해 스위치 문이 끝날 때까지 전부 수행하게 된다. 사용법은 다음과 같다.

 

switch(조건식)  // 연산 가능한 조건식
{
case 정수상수:
	수행문1;
	break;
case 정수상수:
	수행문2;
	break;
default :
	수행문;
}

 

위 구문은 조건식의 결과에 따라 해당하는 case문의 수행문을 수행하고 break를 만나면 스위치문을 빠져나간다. 여기서 default는 if문에서 else와 같이 모든 case의 경우가 해당되지 않을 때 수행하는 구간이다.

 

if문과 switch문은 서로 표현방식만 다를 뿐 기능은 같다. 따라서 코드를 작성할 때 알맞은 방식을 선택해 사용하면 된다.

 

 

예제

#include <stdio.h>

void main()
{
	int iAge = 0;
	printf("나이를 입력하세요 : ");
	scanf("%d", &iAge);

	// 조건식에는 보통 비교연산자를 사용 (참이면 1, 거짓이면 0)
	if (iAge > 19) // 조건식 
	{
		int iValue = 1; 	
		printf("성인입니다.\n");
		printf("iValue = %d\n", iValue);
	}
}

 

#include <stdio.h>

void main()
{
	// switch ~ case 응용
	// ~ 월을 입력 받고, 계절 출력 
	int iMonth = 0;
	printf("현재 월을 입력하세요 : ");
	scanf("%d", &iMonth);

	switch (iMonth)
	{
	case 3:
	case 4:
	case 5:
		printf("봄\n");
		break;
	case 6:
	case 7:
	case 8:
		printf("여름\n");
		break;
	case 9:
	case 10:
	case 11:
		printf("가을\n");
		break;
	case 12:
	case 1:
	case 2:
		printf("겨울\n");
		break;
	default :
		printf("잘못 입력하였습니다.\n");

	}
}
반응형

+ Recent posts