Ich weiß, dass die C- und C ++ - Standards viele Aspekte der Sprachimplementierung definiert lassen, nur weil es bei einer Architektur mit anderen Merkmalen sehr schwierig oder unmöglich wäre, einen standardkonformen Compiler dafür zu schreiben.
Ich weiß, dass vor 40 Jahren jeder Computer seine eigene Spezifikation hatte. Ich kenne jedoch keine Architekturen, die heute verwendet werden, wo:
CHAR_BIT != 8
signed
ist nicht die Ergänzung von zwei (ich habe gehört, Java hatte Probleme mit diesem).- Gleitkomma ist nicht IEEE 754-kompatibel (Bearbeiten: Ich meinte "nicht in IEEE 754-Binärcodierung").
Der Grund, den ich frage, ist, dass ich den Leuten oft erkläre, dass es gut ist, dass C ++ keine anderen Aspekte auf niedriger Ebene wie Typen mit fester Größe vorschreibt † . Es ist gut, weil es Ihren Code im Gegensatz zu "anderen Sprachen" bei korrekter Verwendung portabel macht (Bearbeiten: weil er auf mehr Architekturen portiert werden kann, ohne dass Emulationen von Aspekten der Maschine auf niedriger Ebene erforderlich sind, wie z. B. die Zweierkomplementarithmetik auf der Architektur mit Vorzeichen + Größe). . Aber ich fühle mich schlecht, dass ich selbst nicht auf eine bestimmte Architektur verweisen kann.
Die Frage ist also: Welche Architekturen weisen die oben genannten Eigenschaften auf?
† uint*_t
s sind optional.