카메라 개발자 공부방(SW)

[4장] 조건 제어문 본문

Langauge/C

[4장] 조건 제어문

luckmart 2021. 9. 23. 18:09
반응형

3장에서 잠깐 맛을 봤죠?

조건 제어문은 조건에 따라 참이면 if 다음 { } 내용을 실행하고,

그렇지 않다면 { }를 실행하지 않습니다.  

 

여기서 조건은 참이면 true, 거짓이면 false입니다.

정수 1도 참이고, 0도 거짓입니다.
정말 중요한 사실! 0이 아닌 모든 값들은 참입니다.

if 문은 주로 아래 3가지 형태로 사용될 수 있습니다.

// 1)
if (조건) {
    
}


// 2) 
if (조건) {
    
}
else {
    
}

// if 조건이 참이 아닌 경우에 else 문을 실행합니다.


// 3) 
if (조건) {
    
}
else if (조건) {
    
}
else {
    
}

// if, else if, else가 한 세트로 되어있는 경우 세트 중에 하나만 실행됩니다.

3)의 경우엔 위에서 가장 먼저 만난 조건 문이 참인 if 문 하나만 실행합니다.

 

다음은 switch 문입니다.

switch의 인자 값(입력)을 분기로 정해서 원하는 코드만 실행시킬 수 있습니다.

int n = 1;
switch(n) {
    case 0:
    break;

    case 1:
    break;

    case 2:
    break;

    default:
    break;
}


입력이 1이면 case 1 분기를, 입력이 2이면 case 2 분기를 실행합니다.

0, 1, 2 이외의 값이 입력이면 default 분기문을 실행합니다.

break는 switch 문을 탈출하는 제어자입니다.

#include <stdio.h>

int main()
{
    if (true) {
        printf("true");
    }
    return 0;
}

// 실행결과
// true

조건 제어문이 참이기 때문에 true가 출력됩니다.

#include <stdio.h>

int main()
{
    if (1) {
        printf("true");
    }
    return 0;
}

// 실행결과
// true

조건 제어문이 참이기 때문에 1이니까 true 출력됩니다.

#include <stdio.h>

int main()
{
    if (-1) {
        printf("true");
    }
    return 0;
}

// 실행결과
// true

0 이외의 모든 값은 참이기 때문에 -1 도 참이므로 true가 출력됩니다.

#include <stdio.h>

int main()
{
    if (true) {
        printf("if \n");
    }
    else if(false) {
        printf("else if\n")
    }
    else {
        printf("else\n");
    }
    return 0;
}

// 실행결과
// if

가장 먼저 만난 조건이 참인 if 문은 if이기 때문에 if가 출력됩니다.

#include <stdio.h>

int main()
{
    if (false) {
        printf("if\n");
    }
    else if(true) {
        printf("else if\n")
    }
    else {
        printf("else\n");
    }
    return 0;
}

// 실행결과
// else if

가장 먼저 만난 조건이 참인 if 문은 else if이기 때문에 else if가 출력됩니다.

#include <stdio.h>

int main()
{
    if (true) {
        printf("if\n");
    }
    else if(true) {
        printf("else if\n");
    }
    else {
        printf("else\n");
    }
    return 0;
}

// 실행결과
// if

else if 가 true라도 가장 먼저 만난 조건이 참인 if 문은 if이기 때문에 if가 출력됩니다.

#include <stdio.h>

int main()
{
    switch (1) {
    case 0:
        printf("case 0\n");
        break;

    case 1:
        printf("case 1\n");
        break;

    case 2:
        printf("case 2\n");
        break;

    default:
        printf("default\n");
        break;
    }
    return 0;
}

// 실행결과
// case 1

입력이 1이기 때문에 분기가 1인 코드가 실행됩니다.

#include <stdio.h>

int main()
{
    char input = 'a';

    switch (input) {
    case 'a':
        printf("case a\n");
        break;

    case 'b':
        printf("case b\n");
        break;

    case 'c':
        printf("case c\n");
        break;

    default:
        printf("default\n");
        break;
    }

    return 0;
}

// 실행결과
// case a

다음은 문자를 입력받아볼까요?

입력이 a이기 때문에 분기가 a인 코드가 실행됩니다.

#include <stdio.h>

int main()
{
    char input = 'a';

    switch (input) {
    case 'a':
    case 'b':
        printf("case ab\n");
        break;

    case 'c':
        printf("case c\n");
        break;

    default:
        printf("default\n");
        break;
    }

    return 0;
}

// 실행결과
// case ab

case a에 분기문 break가 없기 때문에, case b까지 실행이 됩니다.

#include <stdio.h>

int main()
{
    char input = 'a';

    switch (input) {
    case 'a':
    case 'b':
    case 'c':
        printf("case abc\n");
        break;

    default:
        printf("default\n");
        break;
    }

    return 0;
}

// 실행결과
// case abc

case a에 분기문 break가 없기 때문에, case b / case c까지 실행이 됩니다.

 

원리에 대해선 꼭 기억해주세요~!

'Langauge > C' 카테고리의 다른 글

[6장] 자료형(data type)  (0) 2021.09.25
[5장] 반복문  (0) 2021.09.24
[3장] 연산자  (0) 2021.09.22
[2장] 변수  (0) 2021.09.21
[1장] C언어 start  (0) 2021.09.20
Comments