gpt4 book ai didi

无法设置 union 值

转载 作者:行者123 更新时间:2023-11-30 20:47:18 25 4
gpt4 key购买 nike

我有这个代码

union u_value {
int i_value;
long l_value;
float f_value;
double d_value;
char *cp_value;
int type;
};

union u_value create_int_value(int value) {
union u_value val;
val.i_value = value;
val.type = INT;

printf("Inside: %d, %d\n", value, val.i_value);

return val;
}

问题是我无法在 union 内设置值。

例如:

union u_value val = create_int_value(123);
printf("%d\n", val.i_value);

将打印0

我做错了什么?

最佳答案

您已将 type 成员指定为 union 的一部分,这当然会导致其内存与其余字段发生冲突。

创建 "tagged union" ,您必须将标签与 union 分开。像这样的东西:

struct u_value {
int type;
union {
int i_value;
long l_value;
float f_value;
double d_value;
char *cp_value;
} value;
};

然后你可以使用:

u_value x;
x.type = INT;
x.value.i_value = 4711;

来自C11您可以使内部union匿名,这很方便。

关于无法设置 union 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26629341/

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