조건문

image

조건문은 조건에 따라 주어진 조건에 따라서 블럭이 실행되는 구조를 가지고 있습니다.

조건식이 true인 경우 중괄호 {}로 묶여 있는 블럭이 실행됩니다.

c언어는 1true로, 0false로 인식합니다.


if

if (a == 0) {
    a +=1;
}

조건문의 조건은 보통 관계 연산자를 통해 참, 거짓 여부를 비교합니다.

괄호 안에 조건이 참인 경우, 중괄호 블럭을 실행합니다.


if (a == 0) a += 1;

만약 실행블럭이 한 줄인 경우, 중괄호를 생략할 수 있습니다.

함수를 제외하면, 모든 경우에 실행블럭이 한줄인 경우 생략 가능합니다


else

if (a == 0){
    a+=1;
} 
else {
    a = 1;
}

조건문의 조건이 거짓false인 경우 중괄호의 실행블럭이 실행되는 구문입니다.

else 구문은 if구문이 있어야 작성이 가능합니다.


if (a == 0) a += 1;
else a = 1;

if 구문과 동일하게 실행블럭이 한 줄인 경우, 중괄호를 생략할 수 있습니다.


else if

if (a == 0){
    a += 1;
} 
else if(a == 2) {
 a -= 1;
} 
else {
    a = 1;
}

여러가지 조건이 필요한 경우에 작성하는 구문입니다.

else 구문과 마찬가지로, if 구절이 없으면 작성할 수 없습니다.

if 구절 이후, 여러번 작성이 가능합니다.

만약 else if의 조건에도 이 없는 경우, else의 실행블럭이 실행됩니다.


if (a == 0) a += 1;
else if(a == 2) a -=1;
else a = 1;

다른 구문들과 동일하게 실행블럭이 한 줄인 경우, 중괄호를 생략할 수 있습니다.


삼항 연산자

int i = (a == 1) ? (a) : (a + 1);
(조건) ? ture : false

삼항 연산자는 주로 변수를 초기화 하는 과정에서 사용됩니다.

ifswitch 처럼 조건이 여러개일때 편리하지 않지만, 적절하게 사용하면 코드의 가독성을 향상시킬 수 있습니다.


예시

int k;

if (a == 0) {
    k = 1;
}
else {
    k = 2;
}
int k = (a == 0) ? 1 : 2;

위와 아래는 같은 역학을 하는 코드 입니다.

삼항 연산자를 활용하여 if / else구절을 활용하여 작성하는 경우보다 효율적으로 작성된 것을 볼 수 있습니다.


활용 예제

if (score > 100) {
    grade = 'a';
} else if (score > 90) {
    grade = 'b';
} else if (score > 80) {
    grade = 'c';
} else if (score > 70) {
    grade = 'd';
} else {
    grade = 'f';
}

조건문 활용 예시로 자주 등장하는 예제입니다.

if 구문의 조건은 위에서 부터 검사하기 때문에, 각 점수에 맞추어 등급이 지정됩니다.

코드에서는 가독성을 위해 else if로 작성하였지만, 모두 if로 작성하여도 문제는 없습니다.


if (70 <= score %% score <= 100){
    pass = 1;
}

조건에 논리 연산자를 활용하면 조건을 추가할 수 있습니다.

상황에 맞추어 적절하게 사용하시면 되겠습니다.


Switch, case

switch(menu) {
    case 0:
        printf("apple\n");
        break;
    case 1:
        printf("banana\n");
        break;
    default: 
        printf("error\n");
        break;
}

switch구문은 선택절로, 괄호에 int, char 변수를 넣어 활용할 수 있습니다.

변수가 case 옆 변수, 상수와 동일할때 break를 만나는 시점까지 실행됩니다.

만약 break를 만나지 않는다면, 모든 케이스의 코드를 실행하기 때문에, 구문이 끝났다면 break를 작성해야 합니다.

모든 케이스에 변수가 맞지 않다면, default의 실행 블럭을 실행합니다.


함수에서의 switch

char setGrade(int score) {
    switch(score) {
        case 5:
            
            return 'a';
        case 4:
            return 'b';
    }
    return 'f';
}

이후 설명할 함수에선 return(함수 종료 코드)break대신 작성할 수 있습니다.



💡 지적 환영합니다

Comments