Ключевое слово профсоюз
union tag {
union_member(s);
/* additional statements may go here */
}instance;
Профсоюзов ключевое слово используется для объявления в них. Профсоюз набор из одной или более переменных (union_members), которые были сгруппированы под одним именем. Кроме того, каждый из этих членов профсоюза занимает же области памяти.
Ключевое слово профсоюз определяет начало профсоюза определение. Она затем Тег это название, данное соединение. После тега являются членами профсоюза, заключенный в фигурные скобки.
Например, фактическое объявление профсоюза, также могут быть определены. Если вы определяете структуру без Например, это просто шаблон, который может быть в дальнейшем использованы в программе объявить структур. Ниже приведен шаблон в формате :
union tag {
union_member(s);
/* additional statements may go here */
};
Чтобы воспользоваться шаблоном, нужно использовать следующий формат :
union tag instance;
Чтобы использовать этот формат, Вы должны быть предварительно объявлены союза с учетом тега.
/* Declare a union template called tag */
union tag {
int num;
char alps;
}
/* Use the union template */
union tag mixed_variable;
/* Declare a union and instance together */
union generic_type_tag {
char c;
int i;
float f;
double d;
} generic;
/* Initialize a union. */
union date_tag {
char full_date[9];
struct part_date_tag {
char month[2];
char break_value1;
char day[2];
char break_value2;
char year[2];
} part_date;
}date = {"09/12/80"};
Давайте лучше понять ее с помощью примеров :
#include <stdio.h>
int main()
{
union
{
int value; /* This is the first part of the union */
struct
{
char first; /* These two values are the second part of it */
char second;
} half;
} number;
long index;
for (index = 12 ; index < 300000L ; index += 35231L)
{
number.value = index;
printf("%8x %6x %6x\n", number.value,
number.half.first,
number.half.second);
}
return 0;
}
А результаты работы программы будут выглядеть следующим образом :
c c 0
89ab ffab ff89
134a 4a 13
9ce9 ffe9 ff9c
2688 ff88 26
b027 27 ffb0
39c6 ffc6 39
c365 65 ffc3
4d04 4 4d
|
|