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
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.