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