1. 논리 데이터 타입: bool
이미 봤듯이, C#에는 진짜 유용한 연산자 if-else가 있어. 괄호 안 조건이 true면 한 블록, false면 다른 블록을 실행하지.
true나 false가 될 수 있는 표현식을 다루기 편하게, C#에는 bool이라는 특별한 타입이 있어. 이 타입의 변수는 딱 두 값만 가질 수 있어: true (참)랑 false (거짓).
bool 타입 변수에는 다른 값을 넣을 수 없어. 컴파일러가 허락 안 해.
bool 타입 변수 예시:
bool isAdult = true;
bool hasMoney = false;
bool 타입 변수는 오직 두 값만 가질 수 있어 — true (참)랑 false (거짓). 끝! 거의 테스트 결과처럼 — "통과" 아니면 "실패"(읏차).
2. 비교 연산
이렇게 단순한 타입이 왜 필요할까? bool의 진짜 힘은 논리식을 만들 때 나와. 보통 비교 연산자를 써서 만들지.
| 연산자 | 의미 | 예시 | 값 |
|---|---|---|---|
| == | 같다 | |
true 또는 false |
| != | 같지 않다 | |
true 또는 false |
| > | 크다 | |
true 또는 false |
| < | 작다 | |
true 또는 false |
| >= | 크거나 같다 | |
true 또는 false |
| <= | 작거나 같다 | |
true 또는 false |
예시:
int age = 20;
bool isAdult = age >= 18; // true (20은 18보다 크거나 같음)
bool isTeenager = age >= 13 && age < 18; // false (20은 18보다 작지 않음)
bool isEven = age % 2 == 0; // true (20은 2로 나누어 떨어짐)
여기서 isAdult는 true가 돼. 왜냐면 20살은 진짜 "성인"이니까.
중요 포인트 1:
두 글자로 된 연산자는 띄면 안 돼.
a < = 10
speed > = max
age = = 18
time ! = 0
중요 포인트 2:
=>나 =< 연산자는 없어: <=랑 >=만 있어. a =< 3 이렇게 쓰면 코드가 컴파일 안 돼.
중요 포인트 3:
C#에서는 18 < age < 65 이런 식으로 못 써. 18 < age의 결과는 true나 false가 되고, true < 65처럼 타입이 달라서 비교가 안 돼. 적어도 C#에서는 그래.
3. 논리 연산
C#에서는 18 < age < 65 이런 식으로 못 써 — 문법적으로 틀려서 컴파일이 안 돼.
대신 이렇게 쓸 수 있어:
(18 < age) 그리고 (age < 65)
물론 그리고 대신 다른 논리 연산자를 써야 하고, 이제 그 얘기를 할 거야.
C#에는 세 가지 논리 연산자가 있어: AND (그리고), OR (또는), NOT (아니).
좋은 소식: 괄호를 쓰면 아무리 복잡한 논리식도 만들 수 있어.
나쁜 소식: C# 개발자들은 and, or, not 대신 C++ 스타일 기호를 쓰기로 했어.
| 논리 연산자 | 기대 | 현실 |
|---|---|---|
| 그리고 (∧) | and | && |
| 또는 (∨) | or | || |
| 아니 (¬) | not | ! |
여기 C#에서 논리 연산자 쓰는 예시 몇 개:
| 표현식 | 풀이 | 설명 |
|---|---|---|
| (0 < a) && (a < 100) | (0 < a) and (a < 100) | (0 < a) 그리고 (a < 100) |
| (!a) && (!b) | (not a) and (not b) | (아니 a) 그리고 (아니 b) |
| !(!a || !b) | not((not a) or (not b)) | 아니((아니 a) 또는 (아니 b)) |
4. 진리표
논리 연산을 간단히 정리해볼게.
AND 연산자
AND, 즉 그리고, &&, 교집합, 논리 곱이라고도 해.
| 표현식 | 결과 |
|---|---|
| true && true | true |
| true && false | false |
| false && true | false |
| false && false | false |
즉, 두 값이 모두 true (참)일 때만 결과가 true (참)야. 나머지는 항상 false (거짓).
OR 연산자
OR, 즉 또는, ||, 합집합, 논리 합이라고도 해.
| 표현식 | 결과 |
|---|---|
| true || true | true |
| true || false | true |
| false || true | true |
| false || false | false |
즉, 둘 중 하나라도 true (참)이면 결과는 true (참)이야. 둘 다 false면 결과도 false.
NOT 연산자
NOT, 즉 아니, !, 반전이라고도 해.
| 표현식 | 결과 |
|---|---|
| ! true | false |
| ! false | true |
true를 false로, false를 true로 바꿔.
꿀팁 논리식:
| 표현식 | 결과 |
|---|---|
| m && !m | false |
| m || !m | true |
| !(a && b) | !a || !b |
| !(a || b) | !a && !b |
5. 논리 연산 예시: and, or, not
"그리고" 연산, AND, &&로 표시
두 변수 모두 참일 때만 결과가 참이야.
int age = 16;
bool hasTicket = true;
bool canAttend = age >= 14 && hasTicket; // true (16은 14보다 크고, 티켓 있음)
14살 이상 그리고 티켓 있으면 — 입장!
"또는" 연산, OR, (||)로 표시
둘 중 하나라도 참이면 결과가 참이야.
bool isAdmin = false;
bool isModerator = true;
bool canEdit = isAdmin || isModerator; // true (둘 중 하나라도 true면 편집 가능)
관리자 또는 모더레이터면 — 버튼 눌러도 돼!
"아니" 연산, NOT, (!)로 표시
참을 거짓으로, 거짓을 참으로 바꿔.
bool isWeekend = false;
bool shouldGoToWork = !isWeekend; // true (주말 아니면 출근)
아니 주말이면 — 일어나야지!
조합: 아무리 복잡한 조건도 만들 수 있어
논리 연산은 얼마든지 조합할 수 있어 (너무 복잡하게만 안 하면 돼, "그가 아니 아니 아니 아니 관리자면..." 이런 거 말고). 괄호는 (꼭!) 써서 보기 쉽게 하자.
예시:
int age = 17;
bool hasTicket = false;
bool isVip = true;
bool canGo = (age >= 18 && hasTicket) || isVip; // true, isVip = true라서
여기서 논리는: 성인이고 티켓 있거나, VIP면 입장. VIP 아니면 성인+티켓만 입장 가능.
GO TO FULL VERSION