C언어 초급 - 5장: 연산자와 표현식 (5.4 논리 연산자 (&&, ||, !))

2025. 2. 23. 17:01프로그래밍 언어/C

아래는 올바르게 정리된 논리 연산자 표입니다.
이제 ||(논리 OR 연산자)가 제대로 정렬되었습니다.


5.4 논리 연산자 (&&, ||, !)

C 언어에서 논리 연산자(Logical Operators)두 개 이상의 조건을 조합하여 참(true) 또는 거짓(false)을 반환하는 연산자입니다.
이 연산자는 조건문(if, while)에서 자주 사용되며, true(1)과 false(0)의 개념을 기반으로 동작합니다.


1. 논리 연산자의 종류

1.1 논리 연산자 개요

연산자 설명 사용 예제 결과 (A = 1, B = 0)
&& 논리 AND (두 조건이 모두 참이면 true) A && B 0 (false)
|| 논리 OR (하나라도 참이면 true) A || B 1 (true)
! 논리 NOT (논리 반전, true ↔ false) !A 0 (false)

📌 **참(true) = 1, 거짓(false) = 0
📌 논리 연산자는 주로 조건문(if, while)에서 사용됨.


2. 논리 AND 연산자 (&&)

2.1 && 연산자의 개념

  • 두 개의 조건이 모두 참(true)일 때만 true 반환.
  • 하나라도 거짓(false)이면 결과는 false.

진리표 (Truth Table)

A B A && B
true(1) true(1) true(1)
true(1) false(0) false(0)
false(0) true(1) false(0)
false(0) false(0) false(0)

2.2 && 연산자 예제

#include <stdio.h>

int main() {
    int age = 25;
    int income = 4000;

    if (age > 18 && income > 3000) {
        printf("대출 신청 가능\n");
    } else {
        printf("대출 신청 불가능\n");
    }

    return 0;
}

실행 예시

대출 신청 가능

📌 설명

  • age > 18 (참 true)
  • income > 3000 (참 true)
  • 둘 다 참이므로 && 연산 결과는 true, 조건 충족 → "대출 신청 가능" 출력.

3. 논리 OR 연산자 (||)

3.1 || 연산자의 개념

  • 하나라도 참(true)이면 true 반환.
  • 둘 다 거짓(false)일 때만 false.

진리표 (Truth Table)

A B A || B
true(1) true(1) true(1)
true(1) false(0) true(1)
false(0) true(1) true(1)
false(0) false(0) false(0)

3.2 || 연산자 예제

#include <stdio.h>

int main() {
    int hasJob = 1;
    int hasSavings = 0;

    if (hasJob || hasSavings) {
        printf("대출 신청 가능\n");
    } else {
        printf("대출 신청 불가능\n");
    }

    return 0;
}

실행 예시

대출 신청 가능

📌 설명

  • hasJob == 1 (참 true)
  • hasSavings == 0 (거짓 false)
  • 하나라도 참이므로 || 연산 결과는 true, 조건 충족 → "대출 신청 가능" 출력.

4. 논리 NOT 연산자 (!)

4.1 ! 연산자의 개념

  • 참(true)이면 거짓(false)로 변경.
  • 거짓(false)이면 참(true)로 변경.

진리표 (Truth Table)

A !A
true(1) false(0)
false(0) true(1)

4.2 ! 연산자 예제

#include <stdio.h>

int main() {
    int raining = 1;

    if (!raining) {
        printf("우산 필요 없음\n");
    } else {
        printf("우산을 챙기세요\n");
    }

    return 0;
}

실행 예시

우산을 챙기세요

📌 설명

  • raining == 1 (참 true)
  • !raining == 0 (거짓 false)
  • if (!raining) 조건이 거짓이므로 else 실행 → "우산을 챙기세요" 출력.

5. 논리 연산자의 활용 예제

5.1 특정 범위 내 숫자 판별

&& 연산자를 활용하여 숫자가 특정 범위 내에 있는지 검사할 수 있습니다.

#include <stdio.h>

int main() {
    int num;

    printf("숫자를 입력하세요: ");
    scanf("%d", &num);

    if (num >= 1 && num <= 100) {
        printf("입력한 숫자는 1~100 사이입니다.\n");
    } else {
        printf("입력한 숫자가 범위를 벗어났습니다.\n");
    }

    return 0;
}

실행 예시

숫자를 입력하세요: 50
입력한 숫자는 1~100 사이입니다.
숫자를 입력하세요: 150
입력한 숫자가 범위를 벗어났습니다.

📌 설명

  • num >= 1 && num <= 100 → num이 1~100 사이면 true.
  • 그렇지 않으면 false.

5.2 로그인 시스템

|| 연산자를 활용하여 여러 개의 조건 중 하나만 충족해도 실행되는 프로그램을 만들 수 있습니다.

#include <stdio.h>
#include <string.h>

int main() {
    char username[20];

    printf("사용자 이름을 입력하세요: ");
    scanf("%s", username);

    if (strcmp(username, "admin") == 0 || strcmp(username, "user") == 0) {
        printf("로그인 성공\n");
    } else {
        printf("접근 불가\n");
    }

    return 0;
}

실행 예시

사용자 이름을 입력하세요: admin
로그인 성공
사용자 이름을 입력하세요: guest
접근 불가

📌 설명

  • strcmp(username, "admin") == 0 || strcmp(username, "user") == 0
  • username이 "admin" 또는 "user"이면 로그인 허용.

6. 정리

연산자  설명 사용 예제 결과 (A = 1, B = 0)
&& 논리 AND (두 조건이 모두 참이면 true) A && B 0 (false)
|| 논리 OR (하나라도 참이면 true) A || B 1 (true)
! 논리 NOT (논리 반전, true ↔ false) !A 0 (false)