프로그래밍에서는 조건을 비교하는 일이 정말 많습니다.
그리고 조건이 하나만 있는 게 아니라 두 개, 세 개 이상의 조건을 동시에 판단해야 할 때가 많죠.
예를 들어 나이가 20세 이상이고 성별이 남자인지 확인하거나, 점수가 60점 이상이거나 재시험 대상인 경우처럼 말이죠.
이럴 때 사용하는 것이 바로 **논리 연산자(Logical Operators)**입니다.
● 논리 연산자란?
논리 연산자는 여러 개의 조건을 연결하여 최종 결과를 판단할 수 있게 해주는 연산자입니다.
조건문(if 등)에서 자주 쓰이며, 조건끼리의 관계를 판단할 때 필수입니다.
● 논리 연산자의 종류
연산자 | 이름 | 의미 | 예시 |
&& | 논리 AND | 둘 다 참일 때만 결과가 참 | age >= 20 && gender == 1 |
` | ` | 논리 OR | |
! | 논리 NOT | 참이면 거짓, 거짓이면 참 (부정) | !(a > b) |
● 예제 코드
int age = 25;
int gender = 1; // 1: 남자, 0: 여자
if (age >= 20 && gender == 1) {
printf("성인 남성입니다.\n");
}
- &&는 두 조건이 모두 참일 때만 전체가 참입니다.
- ||는 둘 중 하나라도 참이면 전체가 참이 됩니다.
- !는 반대 값으로 바꿔줍니다.
● 진리표로 이해하기
A (조건 1) | B (조건 2) | A && B | A || B |
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 |
- &&: 둘 다 1이어야 결과가 1
- ||: 둘 중 하나라도 1이면 결과가 1
● ! 연산자 (부정)
int x = 10;
if (!(x > 5)) {
printf("x는 5보다 작거나 같다.\n");
}
- x > 5는 참이지만, !가 앞에 붙으면서 결과는 거짓이 됩니다.
● 주의할 점
- 조건은 항상 0(거짓) 또는 1(참)으로 처리됩니다.
if (score >= 60 && score <= 100)
- 비트 연산자(&, |)와 혼동하지 마세요!
- &는 비트 AND, |는 비트 OR
- 조건 판단에는 반드시 &&, || 사용
- 괄호를 사용해 조건을 명확하게 묶어주세요.
if ((age >= 20 && age <= 30) || vip == 1)
논리 연산자는 여러 조건을 조합할 수 있게 해주는 조건문의 핵심 도구입니다.
&&, ||, ! 이 세 가지만 익혀두면 대부분의 복합 조건을 처리할 수 있어요.
조건이 많아질수록 괄호를 적절히 활용해서 코드를 읽기 쉽게 구성하는 습관도 함께 길러보면 좋습니다.
실습 문제
아래 문제는 직접 코드를 작성해보고, 실행 결과를 확인한 후 스스로 정답을 유추해보는 형태입니다.
정답은 바로 아래에서 확인할 수 있습니다.
문제 1
정수형 변수 age = 25, gender = 1일 때,
두 조건이 모두 참이면 "입장 가능"을 출력하는 코드를 작성하세요.
- 조건: 나이가 20 이상 그리고 성별이 남자(1)
문제 2
정수형 변수 score = 55, retest = 1일 때,
60점 이상이거나 재시험 대상이면 "통과"를 출력하는 코드를 작성하세요.
문제 3
정수형 변수 x = 10일 때,
x가 5보다 작지 않다면 "조건 불만족"을 출력하도록 ! 연산자를 사용해보세요.
문제 4
다음 코드의 출력 결과는 무엇일까요?
int a = 0, b = 1;
printf("%d\n", a || b);
문제 5
아래 중 논리 연산자 사용이 올바르지 않은 코드는?
A. if (a > 0 && b < 10)
B. if (x == 1 || y == 2)
C. if (!flag)
D. if (score > 80 | score < 60)
▶ 정답 확인하기
정답 1
int age = 25, gender = 1;
if (age >= 20 && gender == 1) {
printf("입장 가능\n");
}
정답 2
int score = 55, retest = 1;
if (score >= 60 || retest == 1) {
printf("통과\n");
}
정답 3
int x = 10;
if (!(x < 5)) {
printf("조건 불만족\n");
}
정답 4
출력 결과:
1
설명: a = 0, b = 1 → a || b는 둘 중 하나가 참이면 참 → 결과는 1
정답 5
정답: D
- |는 비트 OR 연산자이며, 논리 판단에는 ||을 써야 함
- if (score > 80 || score < 60)가 올바른 표현
'프로그래밍언어 > C언어[초급]' 카테고리의 다른 글
[C언어][초급] Chapter20. 증감 연산자(++ --) 사용법과 전위·후위 차이 정리 (0) | 2025.04.16 |
---|---|
[C언어][초급] Chapter19. 복합 대입 연산자 (+=, -=, *=, /=, %=) (0) | 2025.04.16 |
[C언어][초급] Chapter17. 관계 연산자 – 참인지 거짓인지 판단하는 도구 (0) | 2025.04.16 |
[C언어][초급] Chapter16. 대입 연산자 – 값을 저장하는 가장 기본적인 연산 (0) | 2025.04.16 |
[C언어][초급] Chapter15. 산술 연산자 – 사칙연산을 코드로 표현해보자 (0) | 2025.04.16 |