unionの初期化の癖

union Uni{
 int x;
 char* c;
};

があったとき、

Uni u[] = {
 1, 2, 3
};

はできるが、

Uni u[] = {
 "a", "b", "c", "d"
};

コンパイルエラーとなる。

つまり、宣言に最初に書いた方が優先されるということらしいです。