注册 登录
编程论坛 VC++/MFC

关于编译环境为小端字节序的赋值问题

wlhdhn 发布于 2011-10-16 20:55, 934 次点击
struct T_s1
    {
        char a;
        short b;
        char c;
    };
    union T_s2
    {
        int a;
        T_s1 b;
    };
    T_s2 s;
    s.a=0x11223344;
    cout<<hex<<s.b.a<<endl
        <<hex<<s.b.b<<endl
        <<hex<<s.b.c<<endl;

我在VC++6.0环境下的运行结果是:
                              D
                              1122
请问s.b.a的值为何是D?还有就是s.b.c为何没有值输出?
百思不得其解啊?
请大牛指点!!谢谢!!
5 回复
#2
wlhdhn2011-10-17 09:17
自己顶下,别沉了,请给位大牛不吝赐教!!
#3
玩出来的代码2011-10-17 11:50
你知道小端模式下数据在内存的存储方式,知道结构体的成员内存边界对其,知道联合体的共用,知道acsii码。那问题就解决了。
#4
wlhdhn2011-10-17 20:32
明白了,谢谢楼上指教!
#5
wlhdhn2011-10-17 20:37
小端模式是低地址放地位,union中成员共用内存空间,因此0x3344分给T_s1::a,因字符只需一个字节,所以s.b.a=0x44,即字符‘D’,0x1122分给T_s1::b,而T_s1::c=0;即字符‘\0’
#6
冰之将释2011-10-24 22:15
知道 了,很感谢复习了一下
1