Programming

[C/C++] Boolean type 사용하기

#include 
#include 

int main(void)
{
bool a;

a = true;
if (a) {
printf("true\n");
} else {
printf("false\n");
}
a = false;
if (a) {
printf("true\n");
} else {
printf("false\n");
}
return 0;
}

C에서는 0 또는 1의 값만을 가지는 _Bool 타입이 C99에서 표준으로 채택되었으나 GCC에서는 이미 3.x 버전에서도 지원하고 있었다. stdbool.h를 include하면 bool이라는 이름의 타입과 true/false의 값을 사용할 수 있다.

C++에서는 별다른 헤더의 지정없이 동일하게 사용할 수 있다.

Boolean 타입의 단점은, 명시적으로 true/false가 나눠지는 값을 대입하지 않고 built-in 타입으로부터 값을 그대로 전달받을 때 의미와 실제 값이 뒤바뀔 수 있다는 점에 있다.(예. 함수의 return 값을 조건문에서 검사할 때, 이 함수가 boolean 타입의 값을 반환하는가 아니면 int 타입의 값을 반환하는가에 따라 의미적 오류가 발생할 수 있다.)

반면에, 이 타입의 가장 큰 미덕은 가독성을 높여준다는 데 있다.

다만, 위에서 언급한 것과 같이 함수의 return 값을 boolean 타입으로 지정하여 사용하는 것은 바람직하지 않다. return 값은 단순히 함수 실행의 성공/실패 여부만을 가리키는 것이 아니라 에러 코드를 포함할 수도 있고 결과의 크기 등의 정보를 표현할 수도 있는 것이기 때문이다.

댓글 2개

답글 남기기