union tag_value {
int var_i;
double var_f;
char var_ch; };
struct tag_var {
union tag_value value;
short type_var;
};
{
struct tag_var var[3];
var[0].type_var = 0;
var[0].value.var_i = 10;
var[1].type_var = 1;
var[1].value.var_f = 2.3;
var[2].type_var = 2;
var[2].value.var_ch = ‘d’;
for(int i = 0;i < 3;i++)
{
switch(var[i].type_var)
{
case 0:printf(“var = %d\n”,var[i].value.var_i);break;
case 1:printf(“var = %f\n”,var[i].value.var_f);break;
case 2:printf(“var = %c\n”,var[i].value.var_ch);break;
default: printf(“Значение переменной не определено\n”);
}
}
return 0;
}