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) 이런 식으로 괄호를 치는 것을 습관을 들여야 합니다.