답변:
sizeof(bool)
구현이 정의되어 있으며 표준은이 사실에 주목할만한 강조를합니다.
§5.3.3 / 1, 요약 :
sizeof(char)
,sizeof(signed char)
및sizeof(unsigned char)
1;sizeof
다른 기본 유형 에 적용된 결과 는 구현에 따라 정의됩니다. [참고 : 특히sizeof(bool)
와sizeof(wchar_t)
구현 정의된다. 69) ]
각주 69) :
sizeof(bool)
1 일 필요는 없습니다.
http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
"Visual C ++ 4.2에서 표준 C ++ 헤더 파일에는 bool과 int를 동일시하는 typedef가 포함되어 있습니다. Visual C ++ 5.0 이상에서 bool은 1 바이트 크기의 기본 제공 형식으로 구현됩니다. 즉, Visual의 경우 C ++ 4.2, sizeof (bool) 호출은 4를 생성하지만 Visual C ++ 5.0 이상에서는 동일한 호출이 1을 생성합니다. 이로 인해 Visual C ++ 4.2에서 bool 유형의 구조 멤버를 정의하고 개체를 혼합하는 경우 메모리 손상 문제가 발생할 수 있습니다. 4.2 및 5.0 이상의 컴파일러로 빌드 된 파일 (OBJ) 및 / 또는 DLL. "
정의 된 구현입니다. 만 sizeof(char)
입니다 1
표준으로.
CHAR_BIT
에 정의 climits
.
bool
있습니까? 내 컴파일러는 1 바이트 만 사용 합니까?