0 Tage Serie
c / intermediate
Snippet

Unions für Type Punning

Eine Union ermöglicht es verschiedenen Mitgliedern, denselben Speicherort zu teilen. Dies wird oft für 'Type Punning' verwendet – das Interpretieren derselben Binärdaten als verschiedene Typen (z. B. das Betrachten des Bitmusters eines Floats als Integer).

snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
union DataOverlay {
float f;
unsigned int i;
};
int main() {
union DataOverlay data;
data.f = 1.0f;
printf("Float: %f, Bits as Int: 0x%X\n", data.f, data.i);
return 0;
}
Erklärung
1
union DataOverlay
Definiert eine Union, bei der alle Mitglieder denselben Speicherplatz teilen.
2
data.f = 1.0f;
Setzt den gemeinsamen Speicher unter Verwendung der Float-Darstellung.
3
data.i
Greift auf genau dieselben Bits zu, interpretiert sie jedoch als vorzeichenlosen Integer.