ВОПРОСЫ МОБИЛЬНОСТИ
Некоторые свойства языка C существенно машинно-зависимы. Не предполагается, что приведенный список возможных затруднений полон, однако основные сложности в нем указаны.
Чисто аппаратные вопросы, подобные размеру слова, свойствам вещественной арифметики и целого деления, как показала практика, большой проблемы не составляют. Другие аспекты аппаратуры находят отражение в различающихся реализациях. За некоторыми из досадных различий, в особенности за распространением знака (преобразование отрицательного символа в отрицательное целое) и порядком, в котором байты размещаются в слове, надо тщательно следить. Большинство остальных различий большой проблемы не составляют.
Число переменных register, которое в действительности можно поместить в регистры, так же как и набор типов, допустимых для регистровых переменных, изменяется от компьютера к компьютеру. Однако компиляторы делают все, что возможно на данной машине; избыточные или недопустимые описания register игнорируются.
Порядок обработки параметров функций в языке не фиксируется, поэтому не определяется и порядок проявления побочных эффектов.
Поскольку символьные константы на самом деле являются объектами типа int, могут быть разрешены константы из нескольких символов. Конкретная реализация сильно зависит от компьютера, так как порядок размещения символсти в нем указаны.
Битные поля, как и символы, могут располагаться в машинном слове слева направо или справа налево. Эти различия незаметны для изолированной программы, не позволяющей себе вольностей с типами (например, преобразование целого указателя в символьный указатель и обследование указываемой им области памяти), однако должны учитываться при согласовании с заданным извне расположением данных.