我有這樣的代碼無法設置工會值
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 u_value val = create_int_value(123);
printf("%d\n", val.i_value);
將打印0
我在做什麼錯?
'type'本身就是工會的成員。設置它將覆蓋以前設置的任何值。如果你試圖實現一個帶標籤的聯合,你將需要一個'struct',其中一個成員是一個聯合,**另一個單獨的成員**是類型標籤。 – 2014-10-29 11:39:06
@ TheParamagneticCroissant我不知道。謝謝!現在感覺很愚蠢 – ivknv 2014-10-29 11:41:21
好吧,你不必*知道*任何特別的東西。爲什麼'type'字段是特殊的?它只是工會的另一個成員。它與所有其他成員共享存儲空間。你需要**瞭解**工會是什麼...... – 2014-10-29 11:42:08