gpt4 book ai didi

c - 如何在运行时区分 c 中的 union 成员

转载 作者:行者123 更新时间:2023-12-04 11:00:07 28 4
gpt4 key购买 nike

我对 union 有疑问。假设有一个 union 定义为

union emp{
float f;
int i;
};

有没有办法确定使用 union 的哪个字段。我遇到过这样一种情况,如果使用 float 字段,我必须打印 float,如果使用 int 字段,则打印 int。功能可能像

void print(union u){

// if float field is initialized
printf("float field = %f\n",u.f);

// if int field is initialized
printf("int field = %d\n",u.i);


}

提前致谢。

最佳答案

你不能只用 union 来判断;通常你将它包装在一个 struct 中,其中包含某种标签值。

struct val {
enum { EMP_INT, EMP_FLOAT } tag;
union emp {
int i;
float f;
} emp;
};

关于c - 如何在运行时区分 c 中的 union 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10073258/

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