C 기본 문법 – 연산자 – 2편: 논리 연산자 완전 정복
안녕하세요, C 언어 열공 중인 여러분 😊
이제까지 우리는 *산술 연산자(+, -, , /, %) 와 관계 연산자(==, !=, > 등)** 를 통해 숫자를 계산하고 비교하는 방법을 배웠죠?
이번 시간에는 그보다 더 깊은 조건 판단을 위한 도구, 바로 **논리 연산자(Logical Operator)**에 대해 배우겠습니다.
🎯 논리 연산자는 여러 조건을 묶어서 하나의 결과(참/거짓)를 판단할 수 있게 해줘요!
마치 “이 조건도 맞고 저 조건도 맞으면 실행해줘!” 같은 복합 조건을 구현할 수 있는 강력한 연산자랍니다.
그럼 지금부터 예제와 비유를 통해 논리 연산자의 모든 것을 파헤쳐 볼게요! 😊
논리 연산자란?
논리 연산자는 두 개 이상의 조건을 연결하여 참 또는 거짓을 판단하는 연산자입니다.
관계 연산자가 “조건 하나”를 판별한다면,
논리 연산자는 “조건 여러 개를 묶어서” 판단합니다.
📦 비유하자면,
조건 하나는 작은 스위치라면, 논리 연산자는 여러 스위치를 조합해 켜지는 회로 장치 같아요.
전부 켜져야 작동하는 경우도 있고, 하나만 켜져도 되는 경우도 있죠!
C 언어의 논리 연산자 종류
연산자 | 의미 | 설명 | 예시 | ||||
---|---|---|---|---|---|---|---|
&& |
AND (그리고) | 양쪽 조건이 모두 참이면 참 | a > 0 && a < 10 |
||||
` | | ` | OR (또는) | 양쪽 조건 중 하나라도 참이면 참 | `score < 0 | | score > 100` | ||||
! |
NOT (부정) | 조건의 참/거짓을 반대로 | !isValid |
논리 연산자 예제 코드
#include <stdio.h>
int main() {
int a = 5, b = 10;
printf("AND: %d
", a > 0 && b > 0); // 1 (참)
printf("OR: %d
", a < 0 || b > 0); // 1 (참)
printf("NOT: %d
", !(a > 0)); // 0 (거짓)
return 0;
}
출력 결과:
AND: 1
OR: 1
NOT: 0
각 연산자 개념 쉽게 정리하기
🔹 AND (&&
)
모든 조건이 참이어야 전체가 참
int age = 25;
if (age >= 18 && age <= 65) {
printf("근로 연령대입니다.
");
}
🧠 조건 1: age >= 18 (참)
조건 2: age <= 65 (참)
둘 다 참이므로 전체도 참 → 실행됨
🔹 OR (||
)
하나라도 참이면 전체가 참
char ch = 'Y';
if (ch == 'Y' || ch == 'y') {
printf("예라고 답했습니다.
");
}
대소문자 구분 없이 ‘Y’ 또는 ‘y’만 입력해도 조건 통과!
🔹 NOT (!
)
참 → 거짓, 거짓 → 참
int loggedIn = 0;
if (!loggedIn) {
printf("로그인이 필요합니다.
");
}
loggedIn
이 0(거짓)이므로!loggedIn
은 1(참)이 되어 실행됨
복합 조건 예시: 로그인 조건 판단
int idCorrect = 1;
int pwCorrect = 0;
if (idCorrect && pwCorrect) {
printf("로그인 성공!
");
} else {
printf("로그인 실패!
");
}
하나라도 틀리면
&&
는 거짓 → 로그인 실패 처리
논리 연산자 우선순위
우선순위 | 연산자 | 의미 | ||
---|---|---|---|---|
1 | ! |
NOT | ||
2 | && |
AND | ||
3 | ` | | ` | OR |
📌 괄호로 묶어서 우선순위를 명확히 해주는 습관을 들이세요!
if (!(a > 0 && b > 0)) { ... } // a, b 모두 양수가 아니면
조건문 속 논리 연산자 예시 모음
❓ 점수가 0 이상 100 이하일까?
if (score >= 0 && score <= 100) {
printf("올바른 점수입니다.
");
}
❓ 값이 범위를 벗어났을까?
if (score < 0 || score > 100) {
printf("유효하지 않은 점수입니다.
");
}
❓ 플래그가 꺼져 있을까?
if (!isEnabled) {
printf("설정이 비활성화되어 있습니다.
");
}
✅ 논리 연산자 요약 정리
연산자 | 의미 | 결과가 참이 되는 경우 | ||
---|---|---|---|---|
&& |
AND | 둘 다 참 | ||
` | | ` | OR | 하나라도 참 | ||
! |
NOT | 피연산자가 거짓 |
⚠️ 논리 연산자 사용 시 주의할 점
주의사항 | 설명 | ||
---|---|---|---|
& 와 && 구분 |
& 는 비트 연산자, && 는 논리 연산자예요! 혼동 금지 |
||
` | | `는 첫 조건이 참이면 두 번째 조건은 생략됨 | 이를 **단락 평가(short-circuit evaluation)**라고 해요 | ||
비교 연산자와 함께 써야 의미 있음 | a && b 가 아닌, a > 0 && b > 0 처럼 논리식 작성 |
||
! 는 괄호로 감싸주는 습관 들이기 |
!(a > 0) 처럼 명확한 표현을 추천합니다 |
마무리하며 💬
논리 연산자는 C 언어에서 조건의 세계를 넓혀주는 열쇠입니다.
단순히 값 하나를 판단하던 것에서 벗어나,
여러 조건을 묶어 복잡한 판단도 손쉽게 구현할 수 있게 해주죠!
앞으로 조건문, 반복문, 상태 제어 등 거의 모든 곳에서 쓰이게 될 논리 연산자,
오늘 정확하게 배워두면 앞으로 실수할 일이 훨씬 줄어들 거예요 😊
다음 시간에는 **대입 연산자 및 복합 대입 연산자 (+=
, *=
, %=
, 등)**를 함께 배워보겠습니다!
그럼 오늘도 수고 많으셨습니다. 감사합니다! 💻✨