练习5-1
假定一个程序在一个源文件中包含了声明:
long foo;
而在另一个文件中包含了:
extern short foo;
又进一步假定,如果给long类型的foo赋一个较小的值,例如37,那么short类型的foo就同时获得了一个值37.我们就能够对运行改程序的硬件做出什么样的推断?如果short类型的foo得到的值不是37而是0,我们又能够做出什么样的推断?
在解答该问题之前,关于数据如何在内存中存储,我们引入两个概念。
- 大端模式(big endian):最低字节放在高位字节,可称高位优先,我们以unsigned int x = 0x12345678为例
高地址
---------------
buf[3] (0x78) -- 低位
buf[2] (0x56)
buf[1] (0x34)
buf[0] (0x12) -- 高位
---------------
低地址 - 小端模式(little endian):最低字节放在低位字节,可称低位优先,我们仍然以unsigned int x = 0x12345678为例
高地址
---------------
buf[3] (0x12) -- 高位
buf[2] (0x34)
buf[1] (0x56)
buf[0] (0x78) -- 低位
--------------
- 大端模式(big endian):最低字节放在高位字节,可称高位优先,我们以unsigned int x = 0x12345678为例
现在我们就可以回答这个问题了,输出结果为37时,为小端模式,而输出结果为0是则为大端模式。