union

能存储不同的数据类型,但只能同时存储其中的一种类型

1
2
3
4
5
6
union one4all
{
int int_val;
long long_val;
double double_val;
};

因为每次只能存储一个值,所以 union 的长度为其最大成员长度

应用场景:商品 ID 可能为字符串,可能为数字整型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct widget {
char brand[20];
int type;
union id {
long id_num;
char id_char[20];
} id_val;
};

...
widget prize;
...

if (prize.type == 1)
cin >> prize.id_val.id_num;
else
cin >> prize.id_val.id_char;

对于嵌入式变成,union 可用于节省内存