gpt4 book ai didi

c++: union -> struct,解释?

转载 作者:行者123 更新时间:2023-11-30 02:02:28 27 4
gpt4 key购买 nike

我有以下类型定义:

typedef union{
unsigned int Entry;
struct {
unsigned char EntryType;
unsigned char EntryOffset[3];
};
} TLineDescriptor;

我也有以下类型的使用:

TLineDescriptor LineDescriptor;
LineDescriptor.Entry = 40;
LineDescriptor.EntryType = 0x81;

sizeof(LineDescriptor) 显示该变量占用 4 个字节的内存,起初我假设它保存的是 int 或 struct。

cout << LineDescriptor.Entry << " " << LineDescriptor.EntryType << endl;

但是,上面的行打印了两个不同的值,即 129 üLineDescriptor.Entry 显然指的是保存值 0x81 的内存位置。我不确定40发生了什么。但很明显,我的假设是错误的。有人可以正确解释和解释类型定义吗?理解它对我使用我找到的代码至关重要。

提前谢谢你。

最佳答案

实际上,这些不是不同的值。 129是字符 ü 的字符代码. operator <<ostream对待 intchar数据类型不同,前者打印数值,后者打印字符值。

所以,你对 union 类型的理解是正确的。但是,请注意,在处理 union 类型时,字节顺序可能是一个问题。例如,在小端机器上 EntryType将保留 Entry 的最低有效字节和 EntryOffset排列其他人。但是在大端机器上,EntryType将保留最高有效字节。

关于c++: union -> struct,解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com