[C/C++] Boolean type 사용하기
Programming/C/C++ / 2012. 10. 7. 04:34
찾아보니 stdbool.h 라는 헤더가 있어서 포스팅 해놓음..
01 | #include <stdio.h> |
02 | #include <stdbool.h> |
03 |
04 | int main( void ) |
05 | { |
06 | bool a; |
07 |
08 | a = true ; |
09 | if (a) { |
10 | printf ( "true\n" ); |
11 | } else { |
12 | printf ( "false\n" ); |
13 | } |
14 | a = false ; |
15 | if (a) { |
16 | printf ( "true\n" ); |
17 | } else { |
18 | printf ( "false\n" ); |
19 | } |
20 | return 0; |
21 | } |
22 | </stdbool.h></stdio.h> |
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 값은 단순히 함수 실행의 성공/실패 여부만을 가리키는 것이 아니라 에러 코드를 포함할 수도 있고 결과의 크기 등의 정보를 표현할 수도 있는 것이기 때문이다.
반응형
'Programming > C/C++' 카테고리의 다른 글
C(C++아님)에서 bool, Boolean 사용 (0) | 2012.10.07 |
---|---|
mbstowcs(), wcstombs() 한글 사용 (0) | 2012.08.29 |
데이터(Data), 힙(Heap), 스택(Stack) 영역 (0) | 2012.06.27 |
빅 엔디안(Big Endian) 과 리틀 엔디안(Little Endian) (0) | 2012.06.25 |
메모리 공간의 이해 (0) | 2012.06.25 |