uint32_t u32 = 0;
uint16_t u16[2];
static_assert(sizeof(u32) == sizeof(u16), "");
memcpy(u16, &u32, sizeof(u32)); // defined?
// if defined, how to we access the data from here on?
这是定义的行为吗?如果是这样,在memcpy
之后我们可以使用什么类型的指针来访问目标数据?从一种类型到另一种类型的memcpy。之后我们如何访问目的地?
我们必须使用uint16_t*
,因为那适用于的型号是u16
?
或者我们必须使用uint32_t*
,因为源数据的类型(由memcpy
复制的源数据)是uint_32
?
(个人兴趣在C++ 11/C++ 14,但相关的语言,如C的讨论会很有趣也。)
是否编译? – wally
它现在确实:-)(我忘记了一个'&'和另一个错字) –
你想知道CPU的字节顺序吗? –