블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2737)
Unity3D (817)
Programming (474)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (228)
협업 (58)
3DS Max (3)
Game (12)
Utility (136)
Etc (96)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (53)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday
04-26 00:00

'bool'에 해당되는 글 2건

  1. 2012.10.07 [C/C++] Boolean type 사용하기
  2. 2012.10.07 C(C++아님)에서 bool, Boolean 사용

찾아보니 stdbool.h 라는 헤더가 있어서 포스팅 해놓음..


01#include <stdio.h>
02#include <stdbool.h>
03 
04int 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 값은 단순히 함수 실행의 성공/실패 여부만을 가리키는 것이 아니라 에러 코드를 포함할 수도 있고 결과의 크기 등의 정보를 표현할 수도 있는 것이기 때문이다.

출처 : http://terzeron.net/wp/?p=760

반응형
Posted by blueasa
, |

머드 패치하면서 bool 값이 필요해서 bool을 넣었더니 에러가 난다..

C는 bool이 없던가..? 있지 않나? 하고 찾아봤더니..

없다..;;

아..기초가 부족한 인생.. 공부가 부족하구나..

C와 C++의 차이점도 좀 봐놔야겠다..


---------------------------------------------------------------------------------------------------------

C++가 아닌, 전통적인 C언어에는 bool (Boolean; 불린, 불리언) 타입이 없습니다. 그래서 사용자가 만들어 주어야 합니다.

typedef 를 사용하여 bool 이라는 자료형을 하나 만들었습니다.

false (거짓) = 0
true  (참)   = 1

에 해당합니다.


C에서, 불린(Boolean) 자료형 정의 예제


소스 파일명: 0.c
#include <stdio.h>

typedef enum {false, true} bool;


int main(void) {

  bool myTest = true;
  if (myTest) puts("논리값이 true 라면 이 줄이 출력됩니다.");


  myTest = false;


  if (myTest) puts("논리값이 false 라면 이 줄이 출력되지 않습니다.");
  if (!myTest) puts("느낌표로 값을 뒤집어주면 이 줄이 출력됩니다.");

  return 0;
}


단, C소스의 확장자가 .cpp 면, C++의 불린형과 충돌하기에 다음과 같은 엉뚱한 에러가 납니다:

0.cpp(3) : error C2143: syntax error : missing '}' before 'constant'
0.cpp(3) : error C2143: syntax error : missing ';' before '}'
0.cpp(3) : error C2059: syntax error : '}'



.cpp 확장자를 가진 소스라면,
typedef enum {false, true} bool;
이 줄을 지워야 정상적으로 작동합니다.




반응형
Posted by blueasa
, |