Sé que los estándares C y C ++ dejan muchos aspectos del lenguaje definidos por la implementación solo porque si hay una arquitectura con otras características, sería muy difícil o imposible escribir un compilador conforme estándar.
Sé que hace 40 años cualquier computadora tenía su propia especificación única. Sin embargo, no conozco ninguna arquitectura utilizada hoy en día donde:
CHAR_BIT != 8
signed
no es el complemento de dos (escuché que Java tenía problemas con este).- El punto flotante no cumple con IEEE 754 (Editar: quise decir "no en codificación binaria IEEE 754").
La razón por la que pregunto es que a menudo les explico a las personas que es bueno que C ++ no exija ningún otro aspecto de bajo nivel, como los tipos de tamaño fijo † . Es bueno porque, a diferencia de 'otros idiomas', hace que su código sea portátil cuando se usa correctamente (Edición: porque se puede portar a más arquitecturas sin requerir la emulación de aspectos de bajo nivel de la máquina, como por ejemplo, aritmética complementaria de dos en arquitectura de signo + magnitud) . Pero me siento mal porque no puedo señalar ninguna arquitectura específica yo mismo.
Entonces la pregunta es: ¿qué arquitecturas exhiben las propiedades anteriores?
† uint*_t
s son opcionales.