Я знаю, что стандарты C и С++ оставляют много аспектов реализации языка только потому, что, если есть архитектура с другими характеристиками, было бы очень сложно или невозможно написать для нее стандартный соответствующий компилятор.
Я знаю, что 40 лет назад у любого компьютера была своя уникальная спецификация. Однако я не знаю ни одной архитектуры, используемой сегодня, где:
-
CHAR_BIT != 8
-
signed
не является двумя дополнениями (я слышал, что у Java были проблемы с этим). - Плавающая точка не соответствует IEEE 754 (Edit: Я имел в виду "не в двоичном кодировании IEEE 754" ).
Причина, по которой я спрашиваю, заключается в том, что я часто объясняю людям, что хорошо, что С++ не предоставляет никаких других низкоуровневых аспектов, таких как типы фиксированного размера †. Это хорошо, потому что, в отличие от "других языков", он делает ваш код переносимым при правильном использовании (Edit: потому что его можно портировать на большее количество архитектур без необходимости эмуляции низкоуровневых аспектов машины, например, например, арифметики с двумя дополнениями на архитектуре знака +, Но мне плохо, что я не могу указать на какую-либо конкретную архитектуру.
Итак, вопрос в том, какие архитектуры демонстрируют вышеуказанные свойства?
† uint*_t
являются необязательными.