본문 바로가기
📚 STUDY/🔥 C

[5-2] if문

by 엄지잉 2024. 9. 5.

if문은 프로그램이 표현식의 값을 사용해 2가지 선택지 중 하나를 고르게 만듦.

 

if  (  expression  )  statement
  • 표현식을 감싸고 있는 괄호는 필수임.
  • 표현식의 값이 참이면(0이 아니라면), 괄호 뒤의 구문이 실행됨.

 

📌 복합문

- if문이 여러 구문을 제어하게 만들고 싶을 때 사용하는 구문

 

복합문이 if 문에 사용될 때 ex)

if (line_num == MAX_LINES) {
    line_num = 0;
    page_num++;
}

 

- 구조상 구문 1개만 사용해야하지만, 실제로는 여러 구문이 필요할 때 자주 사용됨.

 

 

📌 else 절

- if문은 else문을 포함할 수 있음.

if (i > j)
    max = i;
else
    max = j;

 

- if문 중복도 가능함.

if (i > j) {
    if (i > k)
        max = i;
    else
        max = k;
}   else {
    if (j > k)
        max = j;
    else
        max = k;
}

 

굳이 중괄호를 사용하자. if문이나 else문의 구문에 손쉽게 다른 구문을 추가할 수 있음. 프로그램 수정이 용이하고, 두 번째는 if문이나 else문을 사용할 때 깜빡하고 중괄호를 사용하지 않아 발생하는 에러를 방지할 수 있음.

 

 

📌 계단식 if문

- 조건문을 사용할 때 언제나 조건이 1개일 수는 없음. 여러가지 조건을 판별해보고, 참인 값이 나오면 거기서 멈추는 경우가 대부분일 것인데, 이때 '계단식'으로 if문을 사용하는 것이 좋음.

if (  expression  ) {
    statement
} else if (  expression  ) {
    statement
…
} else if (  expression  ) {
    statement
} else {
    statement
}

 

✅ 계단식 if문은 새로운 유형의 구문이 아니라, 기존의 것들을 조합해 활용한 구문임.

 

 

🌐 [프로그래밍] 중개 수수료 계산하기

- 주식을 브로커를 통해 사고 파려면 수수료가 발생함. 이때, 수수료는 거래된 주식의 가치에 따라 증가폭이 달라짐. 

- 수수료 책정 방식은 아래와 같음.

 

🌐 broker.c

  • 사용자가 거래 규모를 입력하면, 이에 따른 수수료를 출력하는 프로그램
/* Calculates a broker's commission */

#include <stdio.h>

int main(void)
{
    float commission;
    float value;

    printf("거래값를 입력하시오: ");
    scanf("%f", &value);

    if (value < 2500.00f) {
        commission = 30.00f + .017f * value;
    } else if (value < 6250.00f) {
        commission = 56.00f + .0066f * value;
    } else if (value < 20000.00f) {
        commission = 76.00f + .0034f * value;
    } else if (value < 50000.00f) {
        commission = 100.00f + .0022f * value;
    } else if (value < 500000.00f) {
        commission = 155.00f + .0011f * value;
    } else {
        commission = 255.00f + .0009f * value;
    }

    if (commission < 39.00f) {
        commission = 39.00f;
    }

    printf("수수료: $%.2f\n", commission);

    return 0;
}

 

 

📌 누구의 else인가?

- if문을 여러 겹으로 사용할 때 else문을 조심해야 함.

ex)

if (y != 0)
    if (x != 0)
        result = x / y;
else
    printf("에러: y는 0과 같습니다\n");

 

Q. else의 짝은 1번 줄의 if, 2번 줄의 if중 누구일까?

A. 들여쓰기로 봐서는 1번 줄의 if와 짝인 걸로 보임. 하지만, C언어에서 가장 가까운 if와 else가 짝지어짐.

 

✅ 중괄호로 작성하는 버릇을 들이자.

 

 

📌 조건 표현식

- C의 if문은 조건의 결과값에 따라 1개 or 여러 개의 행동을 할 수 있게 해줌.

  + C에서는 표현식이 조건의 결과값에 따라 1개 or 여러 개의 값을 만들어내는 연산자가 존재함.

 

- 조건연산자는 2가지 기호(?, :)로 구성되어 있으며, 동시에 사용됨.

expr1 ? expr2 : expr3
  • 만약 expr1이 참이면 expr2이고, 거짓이면 expr3이라는 뜻

 

아래의 1과 2는 같은 의미를 가진 코드임.

// 1
if (i > j) {
    return i;
} else {
    return j;
}

// 2
return i > j ? i : j;

 

 

📌 C89에서의 불 방식의 값

1) int 변수를 정의해 0 또는 1을 할당하는 방식

2) TRUE, FALSE라는 이름으로 매크로정의 하는 방식

#define TRUE (1)
#define FALSE (0)

 

 

📌 C99에서의 불 방식의 값

- _Bool 형식을 제공하기에, 사실상 불리언형이 존재한다고 봐야함.

_Bool flag;

 

<stdbool.h> 헤더파일에 true, false 매크로를 갖고 있고 이는 각각 1, 0을 의미함.

 

 

 

💡 본 내용은 K.N.King의 C Programming: A Modern Approach 책을 참고하였습니다.

'📚 STUDY > 🔥 C' 카테고리의 다른 글

Q&A (들여쓰기 방식, switch 문 작성 방식)  (0) 2024.09.05
[5-3] switch문  (0) 2024.09.05
[5-1] 논리표현식  (0) 2024.09.04
Q&A (pow, fmod, 연산자)  (1) 2024.09.03
[4-5] 표현문  (0) 2024.09.03