20.3 if 조건문과 비교 연산자 사용하기

이제 if 조건문과 비교 연산자를 함께 사용해보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.

comparison_operator_if_integer.c

#include <stdio.h>
 
int main()
{
    int num1 = 10;
 
    if (num1 == 10)    // num1이 10과 같은지 검사
        printf("10입니다.\n");
 
    if (num1 != 5)     // num1이 5와 다른지 검사
        printf("5가 아닙니다.\n");
 
    if (num1 > 10)     // num1이 10보다 큰지 검사
        printf("10보다 큽니다.\n");
 
    if (num1 < 10)     // num1이 10보다 작은지 검사
        printf("10보다 작습니다.\n");
 
    if (num1 >= 10)    // num1이 10보다 크거나 같은지 검사
        printf("10보다 크거나 같습니다.\n");
 
    if (num1 <= 10)    // num1이 10보다 작거나 같은지 검사
        printf("10보다 작거나 같습니다.\n");
 
    return 0;
}

실행 결과

10입니다.
5가 아닙니다.
10보다 크거나 같습니다.
10보다 작거나 같습니다.

if의 조건식에 비교 연산자를 사용했습니다. 지금까지 if0일 때 거짓, 0이 아닐 때 참으로 동작한다고 설명했습니다. 여기서는 비교 연산자의 결과에 따라 if가 동작하여 문자열이 출력됩니다. num110이므로 결과는 다음과 같습니다.

  • num1 == 10: num110과 같으므로 "10입니다."가 출력됩니다.
  • num1 != 5: num15와 다르므로 "5가 아닙니다."가 출력됩니다.
  • num1 > 10: num110보다 크지 않으므로 아무것도 출력되지 않습니다.
  • num1 < 10: num110보다 작지 않으므로 아무것도 출력되지 않습니다.
  • num1 >= 10: num110보다 크거나 같으므로 "10보다 크거나 같습니다."가 출력됩니다.
  • num1 <= 10: num110보다 작거나 같으므로 "10보다 작거나 같습니다."가 출력됩니다.

정수뿐만 아니라 실수나 문자도 비교 연산자로 비교할 수 있습니다.

comparison_operator_if_real_number.c

#include <stdio.h>
 
int main()
{
    float num1 = 0.1f;
    char c1 = 'a';
 
    if (num1 >= 0.09f)   // num1이 실수 0.09보다 크거나 같은지 검사
        printf("0.09보다 크거나 같습니다.\n");
 
    if (c1 == 'a')       // c1이 문자 a와 같은지 검사
        printf("a입니다.\n");
 
    if (c1 == 97)        // c1이 정수 97과 같은지 검사
        printf("97입니다.\n");
 
    if (c1 < 'b')        // c1이 문자 b보다 작은지 검사
        printf("b보다 작습니다.\n");
    
    return 0;
}

실행 결과

0.09보다 크거나 같습니다.
a입니다.
97입니다.
b보다 작습니다.

문자 자료형은 c1 == 'a'처럼 문자 그대로 비교할 수 있습니다. 또한, 문자 자료형은 정수이므로 숫자로 직접 비교하거나 대소 관계를 비교할 수도 있습니다.

단, 실수는 반올림 오차가 발생하므로 == 연산자로 정확한 값을 비교하는 것은 위험합니다. 실수 비교하는 방법은 '부록 4. 실수 자료형의 오차'를 참조하세요.