Não consigo encontrar uma resposta na documentação padrão. O padrão de linguagem C ++ exige sizeof(bool)
sempre ser 1 (para 1 byte) ou esse tamanho é definido pela implementação?
c++
boolean
sizeof
implementation-defined-behavior
0xbadf00d
fonte
fonte
bool
?http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
"No Visual C ++ 4.2, os arquivos de cabeçalho C ++ Padrão continham um typedef que equivalia a bool com int. No Visual C ++ 5.0 e posterior, bool é implementado como um tipo interno com um tamanho de 1 byte. Isso significa que para Visual C ++ 4.2, uma chamada de sizeof (bool) produz 4, enquanto no Visual C ++ 5.0 e posterior, a mesma chamada produz 1. Isso pode causar problemas de corrupção de memória se você tiver definido membros de estrutura do tipo bool no Visual C ++ 4.2 e estiver misturando objeto arquivos (OBJ) e / ou DLLs criados com os compiladores 4.2 e 5.0 ou posteriores. "
fonte
Sua implementação está definida. Só
sizeof(char)
é1
pelo padrão.fonte
CHAR_BIT
, definido emclimits
.Consulte 5.3.3 parágrafo 1:
fonte