논리 연산자
논리 연산자
1
2
3
4
5
6
7
! (역)
&& (And)
|| (Or)
참(true), 거짓(false)
참 : 0 이 아닌 값, 주로 1
거짓 : 0
bool타입의 크기는 1Byte
논리연산자는 연산의 결과가 1 또는 0 만 나올수 있는 연산자이다.
! (역)
1
2
int iTrue = 100; // 0이 아닌 수는 다 참
iTrue = !iTrue; // 0이 들어가있음(참의 역인 거짓)
👉 참, 거짓을 따질 때 0이 아닌 수는 다 참으로 보기 때문에 참을 뒤집으면 거짓(0)이 된다.
반대의 경우도 마찬가지이다.
1
2
int iTrue = 0; // 0은 거짓
iTrue = !iTrue; // 0을 뒤집으면 참이됨
&& (and) , || (or)
1
2
3
4
5
iTrue = 100 && 200; // 둘 다 참이기 때문에 참, 연산결과는 1
iTrue = 0 && 200; // 둘 중 하나라도 거짓이기 때문에 거짓, 결과는 0
iTrue = 0 || 300; // 둘 중 하나만 참이어도 참, 연산결과는 1
iTrue = 0 || 0; // 둘 다 거짓일 경우에만 거짓이 나온다.
논리 연산자는 양 쪽의 값이 참이냐 거짓이냐에 따라서 둘 다 참일 경우엔 참인 1을 주고, 이 조건이 실패하면 거짓인 0를 준다.
주의
1만이 참인줄 착각하는 경우가 많다.
1만이 참이 아니다.
컴퓨터는 1을 참이라고 생각 하지만 받아들일 때는 0만 아니면 이 연산 수식에서는 다 참으로 본다.
true,false전용 자료형(bool)은 100을 넣어도 이를 참이라고 생각하지않고true인지false인지를 무조건 0과 1로만 따진다.
👉bool자료형에 값을 넣어버리면 1 또는 0으로 변환되어서 들어간다.
활용
무조건 0과 1이 아니라 여기에는 숫자 100을 넣을수도있고, 200을 넣을수도 있다.
연산자 쪽에서 참인지 거짓인지 어떻게 받아들이는지를 잊으면 안된다.
👉 이를 활용하는 경우가 많다.
- 조건문같은걸 작성할때 변수의 값이 0이면 그걸 거짓으로 보고 변수에 어떤 값이 들어올거다.
- 그런데 그 값이 반드시 1이란 보장은 없다. 그냥 0이 아닌 어떤 수가 들어올 것이다. 그런데 그것도 의미가 있는 숫자라서 훼손되면 안된다. 그 값은 그대로 남겨있어야 한다.
- 그 값은 유지한 채로 그 값 자체를 참이냐 거짓이냐로 즉시 활용 한다. 동시에, 값이 700이 들어온다면 700은 700대로 그 변수 안에 넣으면서 0이 아니니까 참으로 볼 수도 있다.
👉 이렇게 동시에 비교조건체크로 활용할 때도 있기 때문에 0이 아닌 숫자가 참이라는 개념을 확실하게 알고있어야한다.
true, false를 따질 때 bool자료형 변수를 반드시 만들어서 쓰는 건 아니다.
연관된 연산자와 구문
이 논리 연산자랑 같이 엮여서 주로 사용하는 연산자와 구문도 있다.
논리 연산자랑 자주 엮이는 연산자중에 삼항연산자가 있다.
구문 중에는
if elseswitch case
논리 연산자는 주로 if else와 쓰이고, if else와 유사한 기능을 하는 switch case구문이 있다.