논리 연산자 - C·Java·파이썬
같은 AND·OR·NOT인데 언어마다 얼굴이 다르다. C는 결과가 숫자 1/0, Java는 true/false, 파이썬은 기호 대신 영어 단어를 쓴다.
C - 결과는 1 / 0
| 연산자 | 이름 | 설명 | 예시 |
|---|---|---|---|
| && | AND | 둘 다 참이면 참 | (3 > 1) && (5 > 2) = 1 |
| || | OR | 하나라도 참이면 참 | (3 > 5) || (5 > 2) = 1 |
| ! | NOT | 참이면 거짓, 거짓이면 참 | !(3 > 5) = 1 |
C에는 bool 타입이 없어서 참 = 1, 거짓 = 0 정수로 나온다. printf("%d", (3>1) && (5>2))의 답은 “참”이 아니라 1이라고 써야 한다.
Java - 결과는 true / false
| 연산자 | 이름 | 설명 | 예시 |
|---|---|---|---|
| && | AND | 둘 다 true면 true | (3 > 1) && (5 > 2) = true |
| || | OR | 하나라도 true면 true | (3 > 5) || (5 > 2) = true |
| ! | NOT | true면 false, false면 true | !(3 > 5) = true |
기호는 C와 똑같고, 결과만 boolean(true/false)이다.
Python - 기호 대신 단어
| 연산자 | 설명 | 예시 | 결과 |
|---|---|---|---|
| and | 두 조건 모두 True이면 True | True and False | False |
| or | 하나라도 True이면 True | True or False | True |
| not | True를 False로, False를 True로 반전 | not True | False |
파이썬 코드에 &&가 보이면 그 자체가 함정 - ++처럼 파이썬엔 없다.
개념은 하나다: AND는 둘 다, OR는 하나라도, NOT은 반전. 언어별로 다른 건 표기와 결과 형태뿐 - C는 1/0, Java는 true/false, 파이썬은 and/or/not에 True/False.
&&(논리)와 &(비트)는 다른 연산자다 - 그 구분은 비트 연산자(& | ^ ~ << >>) 정리할 때. 연산자 시리즈 앞 편은 노트 대입 연산자.