Пока вы работаете на уровне значение , в результатах, которые вы получаете, не будет абсолютно никакой разницы, независимо от того, является ли ваша машина прямым или старшим.Т.е., пока вы используете операторы языкового уровня (например, |
и <<
в вашем примере), вы получите точно такой же арифметический результат из вышеприведенного выражения на любой платформе.Порядковый номер машины не обнаруживается и не виден на этом уровне.
Единственные ситуации, когда вам нужно заботиться о порядке байтов, - это когда данные, с которыми вы работаете, проверяются на уровне представления объекта , т. Е. В ситуациях, когда важно представление в необработанной памяти.То, что вы сказали выше о «AB BC CD DE
вместо DE CD BC AB
», конкретно относится к необработанному расположению памяти в данных.Вот что делают такие функции, как ntonl
: они конвертируют один макет памяти в другой.До сих пор вы не указывали, что фактическая структура памяти в любом случае важна для вас.Это так?
Опять же, если вам нужно только значение вышеприведенного выражения, оно полностью и полностью не зависит от порядка байтов.По сути, вы вообще не должны заботиться о порядке байтов, когда пишете программы на С, которые не пытаются получить доступ к необработанному содержимому памяти и изучить его.