논리 연산자
논리 연산자
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 else
switch case
논리 연산자는 주로 if else
와 쓰이고, if else와 유사한 기능을 하는 switch case
구문이 있다.