首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于struct内union的sizeof的有关问题

2012-08-11 
关于struct内union的sizeof的问题下面直接贴代码了 请见谅C/C++ code#include iostreamusing namespace

关于struct内union的sizeof的问题
下面直接贴代码了 请见谅

C/C++ code
#include <iostream>using namespace std;struct tmp{    int    nData;    double    dData;    char    cData1;    union    {        int    nDatainUnion;        double    dDatainUnion;    };    char    cData2;};union uTemp{    int    nDatainUnion;    double    dDatainUnion;};int main(){    tmp test;    cout << (int)&(test.cData1) - (int)&(test.nData) << endl;    cout << (int)&(test.cData2) - (int)&(test.cData1) << endl;    cout << sizeof(tmp) << endl;    cout << sizeof(uTemp) << endl;    cout << sizeof(tmp) - sizeof(int) - sizeof(double) - sizeof(char)*2 << endl;    return 0;}


结果我有点不明白 为什么同样是同一种组成的union

sizeof(tmp) - sizeof(int) - sizeof(double) - sizeof(char)*2 与 sizeof(uTemp) 为什么不等?

[解决办法]
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

热点排行