2010-12-15 47 views
0

在一篇解释小写字母和大写字母的文章中,它说下面的代码假设它是在一个小端机器上运行的。这段代码如何被假设使用little endian?

它假设的原因是“在'C'结构中假定字节的切换。”我不明白这个假设在哪里。

struct { WORD y; WORD x; } POS;

lparam =(DWORD)POS;

+0

你期望'x'能保存DWORD的MSB或LSB吗?另外,你可能想考虑在你的其他问题上接受一些答案。 – mtrw 2010-12-15 20:38:49

+0

我发布的是文章中关于这个结构体的全部内容,它说msb或lsb。 – 2010-12-15 20:41:26

回答

1

想想这样,x(0x1234)和y是(0x5678),意图是使lparam成为(0x12345678)。

示例中的代码将导致lparam(0x78 0x56 0x34 0x12)在一个小端机器上,它是(0x12345678)按预期方式。

然而,在大端机器lparam将是(0x56 0x78 0x12 0x34)这是(0x56781234)。因此,这段代码是在假定它是小端的情况下编写的。