반응형

안녕하세요.

오늘은 C언어 조건문에 대해 알아보도록 하겠습니다.

 

조건문

게임에서 HP가 0일떄 쓰러지는 모션을 취해야하거나, 시작지역으로 이동하려면 꼭 조건문의 조건의 만족할 때만 코드가 실행되야 할 것 입니다.

따라서 특정 조건에 따라서 코드가 실행되도록 하기 위해서는 조건문이 필요합니다.

 

if문

문법

1
2
3
4
if(조건)
{
   구문;
}
cs

만약에 조건이 만족하면 구문을 실행한다는 뜻이 됩니다.

조건이 0이면 실행되지 않고, 0 이외의 값을 가지면 실행이 됩니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
void main()
{
    if (1)
    {
        printf("Hello!!\n");
    }
 
    if (0)
    {
        printf("World!!\n");
    }
}
cs

"Hello!!"만 출력되고, "World!!"는 출력되지 않게됩니다.

 

if-else문

문법

1
2
3
4
5
6
7
8
if(조건)
{
   구문1;
}
else
{
   구문2;
}
cs

if-else문은 if 조건이 만족할 때에는 구문1을 실행하고 조건이 만족하지 못할 때는 else문에 있는 구문2를 실행하게 됩니다.

구문1, 구문2가 함께 실행되는 경우는 없습니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
void main()
{
    int nNum = 5;
    
    if (nNum >= 5)
    {
        printf("%d >= 5", nNum);
    }
    else
    {
        printf("%d < 5", nNum);
    }
}
 
cs

nNum값이 5이기 때문에 5보다 이상인 조건에 만족하기 때문에 " 5 >= 5"가 출력이 됩니다.

 

if-else if-else문

문법

1
2
3
4
5
6
7
8
9
10
11
12
if(조건1)
{
   구문1;
}
else if(조건2)
{
   구문2;
}
else
{
   구문3;
}
cs

if-else if-else문은 if의 조건1이 만족하지 않으면 else if의 조건2를 확인해서 만족하면 구문2를 실행하고, 조건2도 만족하지 않는다면, 구문3을 실행시킵니다.

만약 else if문을 사용하지 않는다면, if - else문으로 다음과 같이 구현해야함으로 가독성이 떨어질 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(조건1)
{
   구문1;
}
else
{
    if(조건2)
    {
       구문2;
    }
    else
    {
       구문3;
    }
}
cs

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
void main()
{
    int nNum = 15;
    
    if (nNum < 5)
    {
        printf("if %d < 5", nNum);
    }
    else if (nNum > 10)
    {
        printf("else if %d > 5", nNum);
    }
    else
    {
        printf("else %d >= 5 and nNum > 10", nNum);
    }
}
 
cs

nNum가 15이기 때문에 "else if 15 > 5"가 출력이 됩니다.

 

조건 연산자(혹은 삼항 연산자)

간단한 if-else조건문 경우에는 조건 연산자를 이용할 수 있습니다.

문법

조건 ? 구문1 : 구문2;

예제

1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
void main()
{
    int nNum = 5;
    
    nNum > 5 ? printf("%d > 5", nNum) : printf("%d <= 5", nNum);
}
 
 
cs

"5 <= 5"가 출력됩니다.

 

if문팁

다음과 같이 if문의 조건에 두가지 혹은 n가지 조건들을 논리연산자(&&, ||, !)로 넣을 수 있습니다.

if( nNum > 5 || nNum < 0 )

이런식으로 구현할 수있습니다.

다음과 같이 데이터를 리턴하는 함수도 넣을 수 있습니다.

if ( func1() && func2() )

위 구문에서 만약에 fun1함수 리턴값이 false값(=0)이라면 func2함수를 호출하지 않습니다.

 

switch-case문

변수값에 따라서 실행구문이 달라진다면 if문 보다 switch-case문이 가독성이 더좋습니다.

문법

1
2
3
4
5
6
7
8
9
switch(변수)
{
    case 상수1:
        break;
    case 상수2:
        break;
    default:
        break;
}
cs

switch문의 변수는 정수만 가능하고(실수형변수는 안됩니다) 변수와 같은 상수를 가진 case문의 구문을 실행하게 됩니다. break문이 없다면 바로 다음 case문을 실행하게 됩니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
void main()
{
    int nNum = 5;
    
    switch (nNum)
    {
    case 5:
        printf("nNum 5\n");
        break;
    case 6:
        printf("nNum 6\n");
        break;
    default:
        printf("default\n");
        break;
    }
}
cs

"nNum 5"가 출력됩니다.

다음과 같이 case 5에 break;문이 없다면 어떻게 될까요??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
void main()
{
    int nNum = 5;
    
    switch (nNum)
    {
    case 5:
        printf("nNum 5\n");
    case 6:
        printf("nNum 6\n");
        break;
    default:
        printf("default\n");
        break;
    }
}
cs

break문이 없다면 바로 다음구문으로 실행되어 "nNum 5"과 "nNum 6"가 출력됩니다.

switch-case문은 해당 구문으로 이동되면서 작동되는 것을 확인할 수 있습니다.

반응형

+ Recent posts