Je sais que les normes C et C ++ laissent de nombreux aspects de l'implémentation du langage définis simplement parce que s'il existe une architecture avec d'autres caractéristiques, il serait très difficile, voire impossible, d'écrire un compilateur conforme aux normes.
Je sais qu'il y a 40 ans, tout ordinateur avait sa propre spécification. Cependant, je ne connais aucune architecture utilisée aujourd'hui où:
CHAR_BIT != 8
signed
n'est pas un complément à deux (j'ai entendu dire que Java avait des problèmes avec celui-ci).- La virgule flottante n'est pas conforme à la norme IEEE 754 (Edit: je voulais dire "pas dans l'encodage binaire IEEE 754").
La raison pour laquelle je pose la question est que j'explique souvent aux gens qu'il est bon que C ++ n'impose aucun autre aspect de bas niveau comme les types de taille fixe † . C'est bien car contrairement aux `` autres langages '', cela rend votre code portable lorsqu'il est utilisé correctement (Edit: parce qu'il peut être porté sur plus d'architectures sans nécessiter d'émulation d'aspects de bas niveau de la machine, comme par exemple l'arithmétique du complément à deux sur l'architecture signe + magnitude) . Mais je me sens mal de ne pouvoir désigner moi-même aucune architecture spécifique.
La question est donc: quelles architectures présentent les propriétés ci-dessus?
† uint*_t
s sont facultatifs.