Eu sei que os padrões C e C ++ deixam muitos aspectos da implementação de linguagem definidos apenas porque, se houver uma arquitetura com outras características, seria muito difícil ou impossível escrever um compilador em conformidade com ele.
Eu sei que 40 anos atrás, qualquer computador tinha sua própria especificação. No entanto, não conheço nenhuma arquitetura usada hoje em que:
CHAR_BIT != 8
signed
não é o complemento de dois (ouvi dizer que Java teve problemas com este).- O ponto flutuante não é compatível com IEEE 754 (Editar: eu quis dizer "não está na codificação binária IEEE 754").
A razão pela qual estou perguntando é que muitas vezes explico às pessoas que é bom que o C ++ não exija outros aspectos de baixo nível, como tipos de tamanho fixo † . É bom porque, diferentemente de outras línguas, torna seu código portátil quando usado corretamente (Edit: porque ele pode ser portado para mais arquiteturas sem exigir a emulação de aspectos de baixo nível da máquina, como por exemplo, aritmética de complemento de dois na arquitetura sign + magnitude) . Mas me sinto mal por não poder apontar para nenhuma arquitetura específica.
Portanto, a pergunta é: quais arquiteturas exibem as propriedades acima?
† uint*_t
s são opcionais.