Bool, 논리 연산자

김펭귄·2025년 7월 16일

C++

목록 보기
6/20

Bool 자료형 선언

bool b1 { true }; // 값 1로 저장
bool b2 { false }; // 값 0으로 저장
b1 = false;
bool b3 {}; // 기본값 0(false)
  • 논리 NOT 연산자(!)를 써서 bool 값을 반전할 수 있다
bool b1 { !true };  // false
bool b2 { !false }; // true

출력

std::cout << true;  // 1 출력
std::cout << false;  // 0출력

std::cout << std::boolalpha;  // bool 출력으로 변환
std::cout << true;  // true 출력
std::cout << false;  // false 출력

std::cout << std::boolalpha;  // 다시 정수로 변환
std::cout << true;  // 1 출력
std::cout << false;  // 0 출력

입력

bool b1 {};
std::cin >> b1;
  • 0 입력 -> b1에 false 저장
  • 1 입력 -> b1에 true 저장
  • 그 이외의 정수 입력 -> b1에 true 저장 후, std::cin은 실패 처리
  • 정수가 아닌 입력 -> b1에 false저장 후, std::cin 실패 처리
bool b1 {};
std::cin >> std::boolalpha;  // 마찬가지로 변환 스위치
std::cin >> b1;
  • false 입력 -> b1에 false 저장
  • true 입력 -> b1에 true 저장
  • 그 이외의 입력(정수 포함) -> b1에 false 저장 후, std::cin은 실패 처리

std::cout << std::boolalphastd::cin >> std::boolalpha는 서로 독립적으로 출력과 입력에 각각 작동한다

함수

  • bool을 리턴하는 함수의 이름은 대부분 is~ 또는 has~형식으로 짓는다
bool isEqual(int x, int y)
{
    return x == y; // 0(false) 또는 1(true)를 반환
}

&&, ||

  • &&가 ||보다 우선순위가 높다
(a && b) || (c && d)	// 이렇게 사용하는 것이 가독성에도 좋다
  • and, or, not 사용도 가능
not a and (b or c);		// 그래도 기호 사용을 더 추천

XOR

  • 피연산자의 true개수가 홀수이면 참, 짝수이면 거짓
  • AND(&&)OR(||)과 달리 XOR은 연산자가 없다
  • 대신 Bool자료형에 != 을 사용하는 것으로 대체 가능하다
if (a != b) // a XOR b
if (a != b != c)  // a XOR b XOR c

if (static_cast<bool>(a) != !!b)	// bool 자료형이 아닐경우의 사용 방법. 둘 다 가능

Reference

learncpp.com

profile
반갑습니다

0개의 댓글