2025-03-02 06:19:34
int型的变量 占2个字节,而一个内存单元只有一个字节的大小,因此int型变量要分开放。
那怎么放呢?是这样的,先把int变量分成两个字节,前八位作为高字节,后八位作为低字节,这样,把高字节的那八位放在低地址内存单元,低字节的那八位放在高地址内存单元。
而long型的占四个字节,也是一样的,分成四个字节分开放,高字节放低地址内存单元。
你的程序中,只占一个字节的0x39给了int型的i[0],那这样,高字节为0,假设放在最低地址的内存单元中,那0x39就顺着往上放,i[1]也一样。好了,这样放完后,这个占四个字节的共用体变量的存储情况就是:0x38 / 0x00 / 0x39 / 0x00 (说明:左手边为高地址,右手边为低地址)。
i[1] i[0]
好了,我们现在是取long型的k,那很显然,低地址的存储单元是它的高字节,高地址的存储单元是它的低字节,这样就得到:0x 00 39 00 38 。
这是我用keil-C51仿真得到的结果,如果你问为什么结果跟你的不一样,那我只能回答:系统决定变量的存放方式。
2025-03-02 06:45:40
2025-03-02 08:58:33
请问i[2]种存储的二进制数据是什么?怎么算的?
%x是16进制,printf("%x\n",s->k);也是以16进制输出
可是,380039是怎么得出来的,我还是不知道啊
第一次的回答完善了一下,回头看下哈,具体的那个中间的00,我再去研究下,别误导了你,。。
2025-03-02 01:57:37
度娘不知道哪里抽了
2025-03-02 00:09:48