C++ 논리연산자에는


1. !a             (a가 true면 false로)

2. a && b      (a와 b가 둘다 참이면 참)

3. a || b       (a와 b중 하나만 참이여도 참)


가 존재한다.


아래와 같은 코드가 있을때

int FuncTrue()

{

printf_s("FuncTrue Progress\n");

return 1;

}


int FuncFalse()

{

printf_s("FuncFalse Progress\n");

return 0;

}


int Left = 3;

int Right = 7;

bool Result;


Result = !Left;

printf_s("!Left 3 %d\n", Result);


Result = Left && Right;

printf_s("Left 3 && Right 7 %d\n", Result);


Result = Left || Right;

printf_s("Left 3 || Right 7 %d\n", Result);


1. Result = FuncTrue() || FuncFalse();

2. Result = FuncFalse() && FuncTrue() && FuncTrue();


Result = !Right;

printf_s("!Right 7 %d\n", Result);


1. FuncFalse() 와 2. FuncTure&& FuncTrue() 부분이 실행될것이라고 오해하는 경우가 많다.


실행결과


1. !Left 3 0

2. Left 3 && Right 7 1

3. Left 3 || Right 7 1

4. FuncTrue Progress

5. FuncFalse Progress

6. !Right 7 0


1. 3은 true !연산자 -> 0(false)

2. 3,7은 true &&연산자 -> 1(true)

3. 3,7은 true ||연산자 -> 1(true)

4. ||연산자는 한쪽만 true여도 true를 리턴한다 그래서 FuncTure()함수가 실행되고 true인걸 확인하고 뒤에있는 FuncFlase()를 실행하지않는다.

5. &&연산자는 양쪽이 true야 true를 리턴한다. 그래서 FuncFalse(0함수가 먼저 실행되고 false를 리턴받아 뒤에있는 FuncTrue() && FuncTrue() 나머지 함수가 실행하지 않는다.

6. 7은 true !연산자 -> 0(false)



'게임 프로그래밍 > C++ 기초' 카테고리의 다른 글

C++ atoi(StringToInt) ,itoa(IntToString) 구현하기  (2) 2019.01.25
C++ IF (조건문)  (0) 2019.01.24
C++ 비교연산자  (0) 2019.01.23
C++ 비트연산자  (0) 2019.01.23
C++ enum(열거체)  (3) 2019.01.16

+ Recent posts