[5-2] if문

2024. 9. 5. 00:02·📚 STUDY/🔥 C

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문  (1) 2024.09.05
[5-1] 논리표현식  (0) 2024.09.04
Q&A (pow, fmod, 연산자)  (2) 2024.09.03
[4-5] 표현문  (0) 2024.09.03
'📚 STUDY/🔥 C' 카테고리의 다른 글
  • Q&A (들여쓰기 방식, switch 문 작성 방식)
  • [5-3] switch문
  • [5-1] 논리표현식
  • Q&A (pow, fmod, 연산자)
엄지잉
엄지잉
공부하는거 올림
  • 엄지잉
    엄지잉의 이것저것
    엄지잉
  • 전체
    오늘
    어제
    • 분류 전체보기 (94) N
      • 🏫 학교 (2)
        • 👩‍🏫 교직 (1)
        • 🏢 USG (1)
      • 🌱 탐구 (17)
        • 📷 SLAM (7)
        • 💡 연구 (8)
        • 🌐 BOJ (2)
      • 📚 STUDY (47) N
        • 🔥 C (32)
        • 📈 알고리즘 (9)
        • 👀 컴퓨터비전 (5) N
        • 🔆 UNITY (1)
      • 🏆 자격증 (23)
        • ⚡ 정처기 (17)
        • 🔠 TOEIC (6)
      • 🎈 활동 (4)
        • 🎁 CJ 리모트 인턴십 (2)
        • 😶 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    C++
    opencv
    SW 개발
    컴퓨터비전
    Body Tracking
    mocopi
    BOJ
    Unity
    정처기
    C언어
    Remote Internship
    RC
    Slam
    Azure Kinect
    토익
    식별자
    DB 구축
    SW 설계
    모션캡처
    c기초
    azurekinect
    필기
    실기
    프언 활용
    2021년
    정보시스템 구축관리
    2022년
    정보처리기사
    C
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
엄지잉
[5-2] if문
상단으로

티스토리툴바