連合キーワード
union tag {
union_member(s);
/* 付加的な声明はここに行くかもしれない */
}instance;
連合キーワードは連合を宣言するために使用される。 連合は単一の名前の下で分かれた1つ以上の変数(union_members)のコレクションである。 さらに、これらの組合員のそれぞれは記憶の同じ区域を占める。
キーワード連合は連合定義の初めを識別する。 それは連合に与えられる名前である札によって続いた。 札の後に支柱で囲まれている組合員はある。
例、連合の実際の宣言はまた、定義することができる。 例なしで構造を定義すれば、構造を宣言するのにプログラムで後で使用することができるのはちょうど型板である。 次は型板のフォーマットである:
union tag {
union_member(s);
/* 付加的な声明はここに行くかもしれない */
};
型板を使用するためには、次のフォーマットを使用する:
union tag instance;
このフォーマットを使用すると、前にある特定の札が付いている連合が宣言したにちがいない。
/* 札と呼ばれる連合型板を宣言しなさい */
union tag {
int num;
char alps;
}
/* 連合型板を使用しなさい */
union tag mixed_variable;
/* 連合および例を一緒に宣言しなさい*/
union generic_type_tag {
char c;
int i;
float f;
double d;
} generic;
/* 連合を初期設定しなさい。 */
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; /* これは連合の最初の部分である */
struct
{
char first; /* この2つの価値はそれの第2部分である */
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
|
|