Я ожидаю, что следующая комбинация из двух uint8_t
(0x00 и 0x01) в один uint16_t
даст мне значение 0x0001, когда я последовательно объединю их в памяти. Вместо этого я получаю 0x0100 = 256, что меня удивляет.
#include <stdio.h>
#include <stdint.h>
int main(void){
uint8_t u1 = 0x00, u2 = 0x01;
uint8_t ut[2] = {u1, u2};
uint16_t *mem16 = (uint16_t*) ut;
printf("mem16 = %d\n", *mem16);
return 0;
}
Может ли кто-нибудь объяснить мне, что я упустил в моем нынешнем понимании C памяти? Спасибо! : -)