프로그래밍/C언어

c언어 - 조건문(if, else if, else, switch case)

solution online 2023. 7. 26. 20:58
728x90
반응형

조건문은 말 그대로 어떠한 조건을 설정하고 그에 맞는 코드를 실행하고자 사용합니다.

 

그 중 대표적으로 if문과 switch case문을 알아보고자 합니다.

 

if, 만약에~ 라는 뜻처럼 특정 조건을 검사하여 코드를 실행시키게 하는 문법입니다.

 

if문은 if만 쓰이기도 하고, if~else, if~else if~else 로 쓰이기도 합니다.

 

아래 예제를 보시죠.

#include <stdio.h>

int main(void)
{
        short sval = 123;
        int ival = 1234;
        long lval = 1234;
        char cval = 'a';
        float fval = 3.14;
        double dval = 3.1415;

        int scanf_val = 0;
        // operator
        int plus = 0;
        int minus = 0;

        int iftest = 3;

        printf("sval: %d\n", sval);
        printf("ival: %d\n", ival);
        printf("lval: %ld\n", lval);
        printf("cval: %c\n", cval);
        printf("fval: %f\n", fval);
        printf("dval: %lf\n", dval);

        scanf("%d", &scanf_val);
        printf("result: %d\n", scanf_val);

        // operator
        plus = ival + lval;
        printf("plus: %d\n", plus);
        minus = ival - lval;
        printf("minus: %d\n", minus);

        if (iftest == 3) {
                printf("제어문 확인: %d\n", iftest);
        }

        if (iftest == 3) {
                printf("제어문 확인2: %d\n", iftest);
        }
        else {
                printf("제어문 확인2: %d\n", iftest);
        }

        if (iftest == 3) {
                printf("제어문 확인3: %d\n", iftest);
        }
        else if (iftest == 4) {
                printf("제어문 확인3: %d\n", iftest);
        }
        else {
                printf("제어문 확인3: %d\n", iftest);
        }
        
        switch (iftest) {
                case 1:
                        printf("switch~case 1번\n");
                        break;
                case 2:
                        printf("switch~case 2번\n");
                        break;
                case 3:
                        printf("switch~case 3번\n");
                        break;
                default:
			printf("switch~case 3번\n");
                        break;
        }

        return 0;
}

 

iftest 라는 정수형 변수에 3이란 값을 대입하면서 초기화 했습니다.

 

if (iftest == 3) 이란? "iftest가 3과 동일하다면" { } 괄호 안에 있는 코드를 실행하라 라는 뜻 입니다.

 

조건이 여러개라면 if ~ else if ~ else 를 사용합니다.

예시보다도 더 많은 조건이 필요하다면 else if 를 여러개 사용하시면 됩니다.

 

if문 하나만 써도 되고, 혹시 모를 상황을 대비해 else를 예방 차원에서 쓰기도 합니다.

 

사용법은 아래와 같습니다.

if (조건)

{

  // 내용

}

 

else if에도 (조건)이 필요하고, else에는 조건을 쓰지 않습니다.

만약 쓴다면 문법 오류로 빌드 오류가 발생합니다.

 

내용이 한 줄인 경우 괄호는 생략이 가능합니다. 예를들면 아래와 같습니다.

 

if (iftest == 3)

    printf("test1\n");

else if (iftest == 4)

    printf("test2\n");

else

    printf("test3\n");

 

else if 로 분류할 것이 많다면 switch문을 쓰기도 합니다.

보통 switch case문이라고 부르며, 예시는 아래 코드 하단부에 있습니다.

#include <stdio.h>

int main(void)
{
        short sval = 123;
        int ival = 1234;
        long lval = 1234;
        char cval = 'a';
        float fval = 3.14;
        double dval = 3.1415;

        int scanf_val = 0;
        // operator
        int plus = 0;
        int minus = 0;

        int iftest = 3;

        printf("sval: %d\n", sval);
        printf("ival: %d\n", ival);
        printf("lval: %ld\n", lval);
        printf("cval: %c\n", cval);
        printf("fval: %f\n", fval);
        printf("dval: %lf\n", dval);

        scanf("%d", &scanf_val);
        printf("result: %d\n", scanf_val);

        // operator
        plus = ival + lval;
        printf("plus: %d\n", plus);
        minus = ival - lval;
        printf("minus: %d\n", minus);

        if (iftest == 3) {
                printf("제어문 확인: %d\n", iftest);
        }

        if (iftest == 3) {
                printf("제어문 확인2: %d\n", iftest);
        }
        else {
                printf("제어문 확인2: %d\n", iftest);
        }

        if (iftest == 3) {
                printf("제어문 확인3: %d\n", iftest);
        }
        else if (iftest == 4) {
                printf("제어문 확인3: %d\n", iftest);
        }
        else {
                printf("제어문 확인3: %d\n", iftest);
        }
        
        switch (iftest) {
                case 1:
                        printf("switch~case 1번\n");
                        break;
                case 2:
                        printf("switch~case 2번\n");
                        break;
                case 3:
                        printf("switch~case 3번\n");
                        break;
		default:
			printf("switch~case 3번\n");
                        break;
        }

        return 0;
}
반응형

 

사용법은 아래와 같습니다.

switch (조건에 사용할 변수 등)

{

    case 값:

        printf("test1\n");

        break;

    case 값:

        printf("test2\n");

        break;

    default:

        printf("test3\n");

        break;

}

 

if문을 쓴다면 iftest == 3 처럼 조건을 매번 써줘야 하지만

switch case를 사용하면 조건을 확인할 변수를 설정해 두고

case에 값을 써서 확인할 수 있습니다.

 

default는 case문에 해당하는 것이 모두 없을 경우 기본값으로 출력해주는 용도이며,

앞서 if문에서 else를 보호 차원에서 쓰는 것과 동일한 역할입니다.

따라서 default는 안써줘도 되지만 else와 다르게 default는 꼭 써주는 것이 관례입니다.

 

안썼다가 걸리면... 제대로 공부 안했다는 소리를... ㅎㅎ;;

 

if문이 좋으냐 switch case문이 좋으냐 라고 가끔 논쟁하는 경우도 있는데

개발 환경에 맞게 쓰시면 됩니다 ㅎㅎ

 

실제로 해외에서는 효율성 측면으로 연구한 것이 있는데

if, else if가 3개가 넘어간다면 switch case가 더 나을 수 있다

라는 결과가 나왔다네요.

 

조건이 많지 않다면 if문이 더 효율이 좋다는 얘기입니다 ㅎ

 

오늘은 if문 switch case문을 알아봤습니다!

 

오늘 예제의 결과는 아래와 같습니다~

728x90
반응형