#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct AnyType {
int type;
union {
int i; // type 0
double d; // type 1
char c; // type 2
} data;
};
void printany(struct AnyType *p) {
switch (p->type) {
default: printf(" (--)"); break; case 0: printf(" %d", p
->data.
i); break; case 1: printf(" %f", p
->data.
d); break; case 2: printf(" %c", p
->data.
c); break; }
}
int main(void) {
struct AnyType array[5] = {0};
array[0].type = 0; array[0].data.i = 3;
array[1].type = 1; array[1].data.d = 2.5;
array[2].type = 2; array[2].data.c = 'H';
array[3].type = 0; array[3].data.i = 421;
array[4].type = 2; array[4].data.c = 'a';
for (int k = 0; k < 20; k++) {
int index
= rand() % 5; // ignore bias printany(&array[index]);
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCnN0cnVjdCBBbnlUeXBlIHsKCWludCB0eXBlOwoJdW5pb24gewoJCWludCBpOyAgICAvLyB0eXBlIDAKCQlkb3VibGUgZDsgLy8gdHlwZSAxCgkJY2hhciBjOyAgIC8vIHR5cGUgMgoJfSBkYXRhOwp9OwoKdm9pZCBwcmludGFueShzdHJ1Y3QgQW55VHlwZSAqcCkgewoJc3dpdGNoIChwLT50eXBlKSB7CgkJZGVmYXVsdDogcHJpbnRmKCIgKC0tKSIpOyBicmVhazsKCQljYXNlIDA6IHByaW50ZigiICVkIiwgcC0+ZGF0YS5pKTsgYnJlYWs7CgkJY2FzZSAxOiBwcmludGYoIiAlZiIsIHAtPmRhdGEuZCk7IGJyZWFrOwoJCWNhc2UgMjogcHJpbnRmKCIgJWMiLCBwLT5kYXRhLmMpOyBicmVhazsKCX0KfQoKaW50IG1haW4odm9pZCkgewoJc3RydWN0IEFueVR5cGUgYXJyYXlbNV0gPSB7MH07CiAgICBhcnJheVswXS50eXBlID0gMDsgYXJyYXlbMF0uZGF0YS5pID0gMzsKICAgIGFycmF5WzFdLnR5cGUgPSAxOyBhcnJheVsxXS5kYXRhLmQgPSAyLjU7CiAgICBhcnJheVsyXS50eXBlID0gMjsgYXJyYXlbMl0uZGF0YS5jID0gJ0gnOwogICAgYXJyYXlbM10udHlwZSA9IDA7IGFycmF5WzNdLmRhdGEuaSA9IDQyMTsKICAgIGFycmF5WzRdLnR5cGUgPSAyOyBhcnJheVs0XS5kYXRhLmMgPSAnYSc7CiAgICAKICAgIHNyYW5kKHRpbWUoMCkpOwoKICAgIHByaW50ZigicmFuZG9tIHZhbHVlczoiKTsKICAgIGZvciAoaW50IGsgPSAwOyBrIDwgMjA7IGsrKykgewogICAgCWludCBpbmRleCA9IHJhbmQoKSAlIDU7IC8vIGlnbm9yZSBiaWFzCiAgICAJcHJpbnRhbnkoJmFycmF5W2luZGV4XSk7CiAgICB9CiAgICBwcmludGYoIlxuIik7Cn0=