На сам деле, как я понял не совсем так...WiseLord писал(а):А во второй строчке *(pointer+1) - восьмибитное число, сдвинув которое 8 раз влево, Вы получаете 0. Вот и итоговое число не меняется. Результат и должен быть 0x0011.
Дело в том, что если слева от "=" стоит 16-ти разрядная переменная, то справа, выражения автоматически приводятся к 16-ти разрядам...
Так что в данном случае приведение справа к 16-ти разрядам - необязательно...
Пробовал так, тут: http://radiokot.ru/forum/viewtopic.php? ... 1#p2252521WiseLord писал(а):Вот если эта строчка записывалась как-то так:, было бы другое дело.Код: Выделить всё
Data |= ((uint16_t)(*(pointer+1)) << 8);
Результат тот же...
В общем, как я понял, не стоит сдвигать результат чтения по указателю... т.к. компилятор это иногда решает не верно...
Лучше сначала прочитать в переменную старшее значение, потом переменную сдвинуть, а потом добавить младшее значение...
В итоге я так и сделал...


