더북(TheBook)

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 헤더 파일을 인클루드해야 한다.

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