gpt4 book ai didi

c++ - union 提取数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:32 25 4
gpt4 key购买 nike

union 不会在this像这样使用时会导致 UB 的问题:

union Data
{
unsigned int intValue;
unsigned char argbBytes[4];
};
Data data;
data.intValue = 1235347;
unsigned char alpha = data.argbBytes[0]; //UB?

我在考虑标准中的 9.5/1:

In a union, at most one of the data members can be active at any time, that is, the value of at most one of the data members can be stored in a union at any time.

最佳答案

总的来说,你是对的,将一种类型的值写入 union 然后将其读出为另一种类型是未定义的行为。另一方面,iirc 标准明确允许将任何内容转换为 char 数组。我从来没有 100% 清楚哪个优先,但我曾经使用过的所有实现都允许 union 转换来做你想做的事。

关于c++ - union 提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3474990/

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