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 |