int main()
{
using namespace std;
bool x = true;
bool y = false;
cout << (x && y) << endl;
return 0;
}
이렇게 되면 왼쪽과 오른쪽이 true냐 false에 따라서 logical 결과가 달라지게 되는데 x와 y가 둘 다 true 일때만 결과가 true가 나옵니다.
이것 같은 경우 게임을 예로 들자면
int main()
{
using namespace std;
bool hit = true;
int health = 10;
if (hit == true && health < 20)
{
cout << "die" << endl;
}
else
health -= 20;
return 0;
}
이런 식으로 공격을 받을 때 데미지가 20을 입히는 공식을 구할 때 사용할 수 있습니다. 논리연산자를 사용하는게 정말 좋기 때문에 권장을 합니다.
logical or
#include <iostream>
#include <cmath>
int main()
{
using namespace std;
//logical or ||
bool x = true;
bool y = false;
cout << (x || y) << endl;
return 0;
}
둘 중 하나만 true면은 true를 출력해줍니다. || 이것이 or의 기호입니다.
and연산자와 or연산자의 우선순위
int main()
{
using namespace std;
bool v1 = true;
bool v2 = false;
bool v3 = false;
bool r1 = v1 || v2 && v3;
bool r2 = (v1 || v2) && v3;
return 0;
}
bool r1 = v1 || v2 && v3; 이것은 1이 나오지만
bool r2 = (v1 || v2) && v3; 이것은 0이 나옵니다.
즉 and operator가 우선순위가 더 높기 때문입니다. 그렇기 때문에 이 부분에서 실수가 많으실 수 있습니다. 억지로 외우시기 보다는 괄호를 치는 것이 편합니다.
다른 사람이 실수할 수 있는 것이기 때문에 v1 || (v2 && v3) 이런 식으로 괄호를 치는 것을 습관을 들여야 합니다.
'IT 프로그래밍 > C++' 카테고리의 다른 글
[4.8 ~ 5.0]영역 제한 열거형(열거형 클래스) ,자료형에게 가명 붙여주기, 구조체 (0) | 2024.03.22 |
---|---|
C-string과 string의 차이 (0) | 2024.03.18 |
[C++] 두 날짜 간의 어느 것이 더 이른지 비교하는 프로그램 작성 (0) | 2024.03.09 |
MAX MIN을 이용한 양의 정수 n개 배열 최대 최소 C++ (0) | 2024.03.09 |
[c++]세 정수 a, b, c를 받은 후 오름차순으로 출력하는 프로그램 (0) | 2024.03.09 |