본문 바로가기
프로그래밍언어/C언어[초급]

[C언어][초급] Chapter18. 논리 연산자 – 여러 조건을 한 번에 판단하는 방법

by about_IT 2025. 4. 16.
728x90

프로그래밍에서는 조건을 비교하는 일이 정말 많습니다.
그리고 조건이 하나만 있는 게 아니라 두 개, 세 개 이상의 조건을 동시에 판단해야 할 때가 많죠.
예를 들어 나이가 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)가 올바른 표현
728x90