C ++에서 부울 유형이 8 비트 길이 (내 시스템에서) 왜 부울 값을 보유하기에 충분합니까?
나는 그것이 성능상의 이유라고 생각했지만 레지스터가 32 또는 64 비트 너비 인 32 비트 또는 64 비트 시스템에서 성능 이점은 무엇입니까?
아니면 이러한 '역사적'이유 중 하나입니까?
sizeof(bool)
4가 될 시스템을 요구하고 있었다. 나는 msvc가 32 비트 bool을 가지고 있다고 맹세 할 수 있지만 방금 시도했지만 그렇게하지 않았다.
vector<bool>
는 그것이 영리하고 부울을 비트로 묶는 것이 아니라 STL 컨테이너로 위장 하려고한다는 것 입니다. 평범한 비트 셋은 STL 컨테이너 인 척하지 않는 한 좋을 것입니다.
bool
데이터 유형을 BOOL
typedef로 정의 된 Windows 유형 과 혼동 할 수 있습니다 long
. 그래서 sizeof(bool) != sizeof(BOOL)
, 나는 많은 혼란 (그리고 아마도 많은 수의 버그)을 일으킬 것이라고 확신합니다. 특히 Windows 에는 boolean
및에 BOOLEAN
대한 별칭 인 typedef 가 있기 때문 입니다 unsigned char
. 또한 bool
1 바이트 인 것이 일반적이지만 C ++ 표준에는 sizeof(bool)
더 클 수 있음을 나타내는 메모가 있습니다.