Um `char 'simples pode ter valores de interceptação?
LEIA-ME
A "valor da armadilha"ou"representação de armadilha" para o tipoT
, é uma combinação de bits (do armazenamento subjacente) que gera um valor inválido deT.
Tentar interpretar a representação de um valor inválido fará com quecomportamento indefinido.
OutroPergunta, questão iniciou uma discussão acalorada sobrechar
e a possibilidade de uma implementação terrepresentações de armadilhas por isso.
Pergunta, questão:
podechar
possivelmente tem valores de armadilha?Citações que foram mencionadas na discussão anterior:Essas seções são as mais citadas durante a argumentação anterior, elas estão contraditórias?
3.9.1p1
Tipos fundamentais [basic.fundamental]
É definido pela implementação se umchar
pode conter valores negativos. Os caracteres podem ser declarados explicitamentesigned
ouunsigned
.
A char,
a signed char,
e umunsigned char
ocupam a mesma quantidade de armazenamento e têm os mesmos requisitos de alinhamento (3.11); isto é, eles têm a mesma representação de objeto. Para tipos de caracteres, todos os bits da representação do objeto participam da representação do valor.
Para tipos de caracteres não assinados, todos os padrões de bits possíveis da representação de valor representam números. Esses requisitos não são válidos para outros tipos.
Em qualquer implementação em particular, um simpleschar
O objeto pode assumir os mesmos valores que umsigned char
ou umunsigned char;
qual é definido pela implementação.
3.9p2Tipos [basic.types]
Para qualquer objeto (que não seja um subobjeto de classe base) do tipo trivialmente copiávelT,
se o objeto possui ou não um valor válido do tipoT
, os bytes subjacentes (1.7) que compõem o objeto podem ser copiados em uma matriz dechar
ouunsigned char.
Se o conteúdo da matriz dechar
ouunsigned char
é copiado de volta para o objeto, o objeto deve subsequentemente manter seu valor original.