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 22 비트 연산자 사용하기'에서 설명하겠습니다).
&&는 두 값이 모두 참이라야 결과가 참이 나옵니다. 따라서 1 && 1만 참이고 나머지는 모두 거짓입니다. 그리고 C 언어에서는 0이 아닌 모든 값이 참이므로 2 && 3도 참이며 결과는 1이 출력됩니다.
논리 연산에서 중요한 부분이 단락 평가(short-circuit evalution)입니다. 단락 평가는 첫 번째 값만으로 결과가 확실할 때 두 번째 값은 확인(평가)하지 않는 방법을 말합니다. 즉, AND 연산자는 두 값이 모두 참이라야 참이므로 첫 번째 값이 거짓이면 두 번째 값은 확인하지 않고 바로 거짓으로 결정합니다.
printf("%d\n", 0 && 1); // 첫 번째 값 0이 거짓이므로 두 번째 값 1은 확인하지 않고 거짓으로 결정