C언어 조건문 (if)
반응형

C언어에서 조건문은 어떠한 조건이 만족될 때 해당 명령문이 실행되는 구문입니다. 즉 그 어떠한 조건에 따라 실행이 결정되고 또흔 조건이 만족할 때까지 실행을 반복시킬 수 있습니다.

C언어의 여러 조건문은 다음과 같습니다.

  • if 문(Statement)
  • switch 문(Statement)
  • ?: 연산자(Operator)
  • goto 문(Statement)

명령문(Statement)이란 C언어의 문법에 맞게 작성된 코드입니다. 이러한 명령문은 특정한 동작을 합니다. 유저에게 입력값을 받거나 화면에 값을 출력하는 등의 기능을 하는 문장입니다. 이렇듯 명령문들이 모여 하나의 프로그램을 작성하게 됩니다.

오늘 알아볼 명령문은 if 구문입니다.

if 조건문

if문은 다양한 형태로 사용됩니다. 프로그래머가 원하는 형태로 사용이 가능하고 사용하는 조건에 맞게 작성하면 됩니다.

  • 단순 if
  • if…else
  • 중첩 if…else
  • else if

▣ 단순 if

if( 조건문 )
{
   안쪽 명령문;
}
바깥 명령문;

가장 간단한 형태입니다. if 조건문이 참(true)이면 안쪽 명령문이 실행되고 거짓(false)이면 실행되지 않습니다. 바깥 명령문은 조건문에 감싸있지 않으므로 언제나 실행되는 명령문입니다.

예제:

#include <stdio.h> ; 
void main( )
{
    int x, y;
    x = 15;
    y = 13;
    if ( x > y )
    {
	printf("x가 y보다 크다.");
    }
}

OUTPUT
x가 y보다 크다

▣ if…else

if( 조건문 )
{
    명령문1;
}
else
{
    명령문2;
}

가장 흔히 사용되는 조건문 형태입니다. if 조건문이 참(true)이면 명령문1이 실행되고 아니면 무조건 명령문2가 실행되는 형태입니다.

예제:

#include <stdio.h>
void main( )
{
    int x, y;
    x = 15;
    y = 18;
    if ( x > y )
    {
	printf("x가 y보다 크다");
    }
    else
    {
 	printf("x가 y보다 작다.");
    }
}

OUTPUT
x가 y보다 작다

 중첩 if…else

if( 조건문1 )
{
    if( 조건문2 )
    {
	명령문1;
    }
    else 
    {
	명령문2;
    }
}
else
{
    명령문3;
}

if 조건문 안에 또 하나의 if 조건문이 있는 형태입니다. 조건문1이 참인 경우 if 조건문2로 이동하여 검사합니다. 만약 조건문1이 거짓이면 언제나 명령문3이 실행됩니다.

예제:

#include <stdio.h>;

void main( )
{
    int a, b, c;
    printf("숫자 3개 입력하시오...");
    scanf("%d%d%d",&a, &b, &c);
    if(a > b)
    { 
        if(a > c)
        {
            printf("a가 가장 큰 숫자");
        }
        else 
        {
            printf("c가 가장 큰 숫자");
        }
    }
    else
    {
        if(b > c)
        {
            printf("b가 가장 큰 숫자");
        }
        else
        {
            printf("c가 가장 큰 숫자");
        }
    }
} 

만약 다음 변수에 a=7, b=2, c=4 입력하면 첫 조건문 (a > b)가 참(true)이므로 다음 조건문인 if(a > c)로 이동하고 이것또한 참(true)이므로 “a가 가장 큰 숫자”가 출력됩니다.

  else if

if( 조건문1 )
{
    명령문1;
}
else if( 조건문2 ) 
{
    명령문2;
}
else if( 조건문3 ) 
{
    명령문3;
}
else 
    default 명령문;

조건문1부터 조건문3까지 차례로 검사하며 해당 조건문이 참인 경우 해당 명령문을 실행하는 형태입니다.

예제:

#include <stdio.h>;

void main( )
{
    int a;
    printf("숫자를 입력하시오...");
    scanf("%d", &a);
    if(a%5 == 0 && a%8 == 0)
    {
        printf("5와 8로 나누어 집니다..");
    }  
    else if(a%8 == 0)
    {
        printf("8로 나누어 집니다..");
    }
    else if(a%5 == 0)
    {
        printf("5로 나누어 집니다.");
    }
    else 
    {
        printf("나눌 수 없습니다.");
    }
}

만약 a=10이면 위에서 부터 조건문을 검사합니다. 여기서 조건문이 참인 경우는 "else if(a%5 == 0)" 조건문입니다. 10의 5로 나눈 값이 0이므로 (a%5 == 0)이 참이 되므로 “5로 나뉘어 집니다.”가 출력됩니다.

그 외 특징

1. 만약 단순 if 문에서 해당 명령문이 하나일 경우 물결 괄호(Curly Brace)({…}) 를 생략할 수 있습니다.

int a = 5;
if(a > 4)
    printf("success");

하지만, 소스코드의 일관성을 위해 물결 괄호를 사용하는 것을 권해 드립니다.

2. 조건문에서는 ‘==’가 비교하는 기호입니다. ‘=’와는 다르며 항상 참(true)을 리턴합니다.

3. 조건문에서 숫자 0(zero)은 거짓(false)을 그 외 숫자는 항상 참(true)입니다.

if(77)
    printf("hi");

위 코드는 “hi”를 출력합니다.

<< 다음 혼자 공부하는 C언어 이전 >>
반응형