4.3.1 비교 연산

    비교 연산자(comparison operator)(==, !=, <, >)는 앞에서 본 적이 있다. <>는 피연산자가 서로 같을 수 없는 경우를 비교하고, <=>=는 각각 ‘작거나 같다’와 ‘크거나 같다’를 표현한다. 이런 연산자는 제어문에서 흔히 사용하지만 그 이상의 역할도 한다.

    TAKEAWAY 4.13 비교 연산자는 falsetrue 값을 리턴한다.

    truefalse는 어디까지나 10을 다르게 표현한 단어일 뿐이다. 따라서 산술 연산이나 배열 인덱스로도 사용할 수 있다. 다음 코드에서 c는 항상 1이고, dab가 같으면 1이고 그렇지 않으면 0이다.

    size_t c = (a < b) + (a == b) + (a > b);
    size_t d = (a <= b) + (a >= b) - 1;

    다음 예에 나온 배열 원소 중에서 sign[false]largeA에 있는 값 중 1.0보다 같거나 큰 것의 개수를 기록하고, sign[true]1.0보다 작은 값의 개수를 기록한다.

    double largeA[N] = { 0 };
    ...
    /* largeA를 채운다. */
    
    size_t sign[2] = { 0, 0 };
    for (size_t i = 0; i < N; ++i) {
        sign[(largeA[i] < 1.0)] += 1;
    }

     

    ▲ 그림 4-1 sign 배열의 구조

    마지막으로 not_eq란 식별자도 있는데, != 대신 쓸 수 있지만 실제로 사용하는 경우는 거의 없다. 이 구문은 !=를 제대로 표현하지 못하는 컴퓨터가 있던 시절에 나온 것이며, 이를 사용하려면 iso646.h 헤더 파일을 인클루드해야 한다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.