我对工会有疑问.假设有一个定义为的联合
union emp{
float f;
int i;
};
Run Code Online (Sandbox Code Playgroud)
有没有办法确定使用哪个联合字段.我遇到过一种情况,如果使用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);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
你不能只说出union; 通常你将它包装在一个struct包含某种标签值的地方.
struct val {
enum { EMP_INT, EMP_FLOAT } tag;
union emp {
int i;
float f;
} emp;
};
Run Code Online (Sandbox Code Playgroud)