Вопрос - есть short, в нем 16 бит, есть char - это 8 бит (если я все правильно понимаю :) ), как в C/C++ в short записать два char в верхний и нижний байт?
>Интересно, gcc одинаковым образом откомпилирует код?
По-разному (4.3.3). Причём под i386 + превращается в add, а | - в or и общее количество операций одинаковое. А под x86_64 + делается через lea и получается на одну операцию короче...
Ну да, на big-endian системах все наоборот, только программист обычно знает под какую систему пишет. На крайняк можно по ifdef 2 варианта поставить. А код можно просто скомпилять и в дебаггере посмотреть работает или нет - чем флейм разводить.
>> код можно просто скомпилять и в дебаггере посмотреть работает или нет - чем флейм разводить. > Лучше написать так, чтобы просто работало. Не умничая.
Дело еще хуже - этого треда не должно быть вообще. Работа с отдельными битами это одна из самых простых вещей которая должна быть подвластна любому программисту.
В начальном вопросе топикстартера не оговаривался порядок расположения байт в приёмнике. В этом случае вариант через пересылки в памяти имеет место быть.
> Ну да, на big-endian системах все наоборот, только программист обычно знает под какую систему пишет. На крайняк можно по ifdef 2 варианта поставить. А код можно просто скомпилять и в дебаггере посмотреть работает или нет - чем флейм разводить.
Ага, а сколько потом будет обсуждений по поиску глюков этого чудесного продукта на других платформах, автора уже не интересует.