IT 프로그래밍/C++
[따배시 2.6] 논리 연산자 Logical Operators
기술1
2024. 3. 15. 21:58
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) 이런 식으로 괄호를 치는 것을 습관을 들여야 합니다.