1. 개요
1.1 문서 개요
이 문서는 C++에서의 불리언(Boolean) 자료형에 대해 정리하는 문서입니다. 불리언은 조건문, 반복문, 논리 연산 등 프로그램의 흐름 제어에서 핵심적인 역할을 합니다. C++에서 bool
자료형은 참과 거짓을 나타내며, 제어 흐름, 조건 분기, 비트 연산 등의 기반 요소로 사용됩니다.
2. 내용
2.1 C++에서의 불리언 자료형 정의
2.1.1 bool
자료형 개요
C++에서 불리언은 bool
키워드를 통해 선언합니다. 이 자료형은 두 가지 값만 가질 수 있습니다:
true
(참)false
(거짓)
bool isReady = true;
bool hasError = false;
2.1.2 내부 표현
bool
값은 내부적으로 정수 값으로 변환되어 처리됩니다:
true
는1
로 처리됩니다.false
는0
으로 처리됩니다.
int a = true; // a = 1
int b = false; // b = 0
또한, 정수형 값이 bool
로 변환될 때, 0은 false
, 0이 아닌 값은 true
로 간주됩니다.
bool x = 10; // true
bool y = 0; // false
2.2 불리언과 조건문
2.2.1 조건문에서의 사용
if
, while
, for
등의 조건문에서 bool
값은 직접 사용되거나 표현식의 결과로 평가됩니다.
bool isValid = true;
if (isValid) {
std::cout << "유효합니다." << std::endl;
}
2.2.2 암시적 변환과 평가
다음과 같은 방식으로 정수나 포인터도 조건문 내에서 평가될 수 있습니다:
int number = 5;
if (number) { // number != 0 → true
std::cout << "0이 아닙니다." << std::endl;
}
2.3 논리 연산자와 불리언
2.3.1 주요 논리 연산자
C++에서 bool
값과 함께 사용되는 주요 논리 연산자는 다음과 같습니다:
연산자 | 의미 | 예시 |
---|---|---|
&& |
논리 AND | a && b → 둘 다 참일 때 참 |
` | ` | |
! |
논리 NOT | !a → a 가 거짓이면 참 |
bool a = true;
bool b = false;
bool result1 = a && b; // false
bool result2 = a || b; // true
bool result3 = !b; // true
2.3.2 단락 평가 (Short-circuit Evaluation)
&&
및 ||
연산자는 좌측 피연산자의 결과에 따라 우측 피연산자의 평가 여부가 결정됩니다.
bool func() {
std::cout << "함수 호출됨" << std::endl;
return true;
}
bool flag = false;
if (flag && func()) {
// func()는 호출되지 않음
}
2.4 불리언과 STL, 반환값
2.4.1 표준 라이브러리에서의 활용
표준 라이브러리에서 bool
은 다음과 같은 경우에 자주 사용됩니다:
std::vector::empty()
,std::string::empty()
등의 반환형std::find() != container.end()
조건 비교
std::vector<int> v = {1, 2, 3};
if (!v.empty()) {
std::cout << "벡터가 비어있지 않습니다." << std::endl;
}
2.4.2 사용자 정의 함수에서의 반환
불리언은 함수의 성공 여부를 반환하는 데에도 활용됩니다.
bool isEven(int n) {
return n % 2 == 0;
}
2.5 명시적 형변환과 std::boolalpha
2.5.1 명시적 형변환
C++에서는 static_cast
를 통해 bool
로 명시적 형변환을 수행할 수 있습니다.
int x = 5;
bool b = static_cast<bool>(x); // true
2.5.2 std::boolalpha
사용
std::cout
을 사용할 때 불리언을 true
/false
문자열로 출력하려면 std::boolalpha
를 사용합니다.
bool flag = true;
std::cout << std::boolalpha << flag << std::endl; // "true"
기본값은 정수 출력 (1
또는 0
)이며, std::noboolalpha
를 사용하면 다시 숫자 형태로 출력됩니다.
3. 마무리
C++에서 불리언 자료형은 프로그램의 흐름 제어, 논리적 판단, 조건 연산 등 다양한 영역에서 핵심적인 역할을 담당합니다. bool
은 단순한 데이터 표현 이상의 의미를 가지며, 다양한 형과 연산자와의 결합을 통해 조건문 및 제어 구조의 기반을 형성합니다. 또한, std::boolalpha
와 같은 출력 방식 제어, 단락 평가와 같은 최적화된 실행 구조 등과 함께 실무에서 널리 활용됩니다. 불리언의 처리 방식과 활용 패턴을 이해하면 C++의 조건 기반 논리 흐름을 보다 정교하게 구성할 수 있습니다.