Я знаю, що стандарти C і C ++ залишають багато аспектів мовної реалізації лише тому, що якщо існує архітектура з іншими характеристиками, було б складно або неможливо написати стандартний відповідний компілятор для неї.
Я знаю, що 40 років тому будь-який комп'ютер мав свою унікальну специфікацію. Однак я не знаю жодної архітектури, яка використовується сьогодні, де:
CHAR_BIT != 8
signed
не є доповненням двох (я чув, що у Java були проблеми з цим).- Плаваюча точка не відповідає IEEE 754 (Редагувати: я мав на увазі "не в двійковому кодуванні IEEE 754").
Причина, про яку я питаю, полягає в тому, що я часто пояснюю людям, що добре, що C ++ не надає жодних інших аспектів низького рівня, таких як типи фіксованого розміру † . Це добре, тому що на відміну від "інших мов", він робить ваш код переносним при правильному використанні (Редагувати: тому, що він може бути перенесений до більшої кількості архітектур, не вимагаючи емуляції аспектів низького рівня машини, як, наприклад, арифметика двох доповнення на архітектурі знака + величини) . Але мені погано, що я сам не можу вказати на якусь конкретну архітектуру.
Тож питання: які архітектури виявляють вищевказані властивості?
† uint*_t
s необов’язкові.