union tag_value int var_i double var_f char var_ch struct tag_var unio

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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;
}