【发布时间】:2014-12-25 02:20:47
【问题描述】:
我有这个代码
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本身就是工会的成员。设置它会覆盖您之前设置的任何值。如果您尝试实现标记联合,则需要struct,其中一个成员是联合,另一个单独的成员是类型标记。 -
@TheParamagneticCroissant 我不知道。谢谢!现在感觉好傻
-
好吧,您不必为此知道任何特别之处。为什么
type字段会很特别?它只是工会的另一个成员。它与所有其他成员共享存储。您需要了解什么是联合...