21.1 AND 연산자 사용하기

먼저 AND 연산자 &&부터 알아보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.

  • a && b

and_operator.c

#include <stdio.h>
 
int main()
{
    printf("%d\n", 1 && 1);    // 1: 1 AND 1은 참
    printf("%d\n", 1 && 0);    // 0: 1 AND 0은 거짓
    printf("%d\n", 0 && 1);    // 0: 0 AND 1은 거짓
    printf("%d\n", 0 && 0);    // 0: 0 AND 0은 거짓
 
    printf("%d\n", 2 && 3);    // 1: 2 AND 3은 참
 
    return 0;
}

실행 결과

1
0
0
0
1

AND 연산자는 &&처럼 & 기호를 두 개 붙여서 사용하며 하나만 사용하면 AND 비트 연산자가 되므로 주의합니다(비트 연산자는 Unit 23 비트 연산자 사용하기'에서 설명하겠습니다).

&&는 두 값이 모두 참이라야 결과가 참이 나옵니다. 따라서 1 && 1만 참이고 나머지는 모두 거짓입니다. 그리고 C 언어에서는 0이 아닌 모든 값이 참이므로 2 && 3도 참이며 결과는 1이 출력됩니다.

논리 연산에서 중요한 부분이 단락 평가(short-circuit evalution)입니다. 단락 평가는 첫 번째 값만으로 결과가 확실할 때 두 번째 값은 확인(평가)하지 않는 방법을 말합니다. 즉, AND 연산자는 두 값이 모두 참이라야 참이므로 첫 번째 값이 거짓이면 두 번째 값은 확인하지 않고 바로 거짓으로 결정합니다.

printf("%d\n", 0 && 1);    // 첫 번째 값 0이 거짓이므로 두 번째 값 1은 확인하지 않고 거짓으로 결정