union 联合类型在GCC下的异常?

今天继续写密钥生成部分,值得说的是,发现了union 联合类型在GCC下的问题。

union EXINT{
    unsigned char c[8];
    //unsigned short int s_i[4];
    unsigned long int i[2];
};

这个时候 检查 exint 结构 得到 Start to check 0022FF40 and byte 8 。

然后调整为

union EXINT{
    unsigned char c[8];
    unsigned short int s_i[5];
    unsigned long int i[2];
};

注意这是还需要clean一下,重新编译,检查 exint结构得到 Start to check 0022FF30 and byte 12 。

明明只是增加了一个 short int 呢,而 sizeof(short int) = 2 ,这样一来我就不明白编译器在干什么了。。

此条目发表在C分类目录,贴了, 标签。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注