In C gibt es keine direkte Möglichkeit herauszufinden welcher Datentyp in einem Union aktuell verwendet wird. Wenn du zur Laufzeit Informationen über den aktuellen Datentyp benötigst, könntest du das mit Hilfe einer externen Variable oder einer anderen Datenstruktur verfolgen, die den Zustand des Unions speichert.
#include <stdio.h>
enum UnionType {
INT_TYPE,
FLOAT_TYPE,
CHAR_TYPE
};
union ExampleUnion {
enum UnionType type; // Indikator für den aktuellen Datentyp
int intValue;
float floatValue;
char charValue;
};
int main() {
union ExampleUnion u;
u.type = INT_TYPE;
u.intValue = 42;
// Zur Laufzeit feststellen, welcher Datentyp verwendet wird
if (u.type == INT_TYPE) {
printf("Int value: %d\n", u.intValue);
} else if (u.type == FLOAT_TYPE) {
printf("Float value: %f\n", u.floatValue);
} else if (u.type == CHAR_TYPE) {
printf("Char value: %c\n", u.charValue);
}
return 0;
}