PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu Type-Casting


Flyinglosi
2011-01-12, 17:22:30
Hi Leute,

ich sitze gerade an einer Programmierübung (in C) und stehe vor einem kleinen Problem:

Ich habe eine Funktion geschrieben, welche mir einen Wert in uint32_t zurück gibt. Nun will ich diesn Rückgabewert einmal als uint32_t interpretieren, ein anderes mal aber als int32_t (die bits sollen also unverändert bleiben, nur die Interpretation soll sich verändern)

Dieses eher simple Problem beschäftigt mich nun seit 2 Stunden. Ich dachte schon daran nur einen Pointer zurück zu geben, und diesen per typecasting zu verändern, doch das scheint mir fast zu kompliziert. Hättet ihr einen Tipp für mich?

Danke im Vorhinein

mfg Stephan

Coda
2011-01-12, 17:27:22
int sint = *((int*)&uint);

Gast
2011-01-12, 19:37:58
Coda, könntest du einem c-noob erklären was genau vor sich geht? und gibt es diese art von cast auch noch in c++?

Trap
2011-01-12, 19:41:16
Es ist genau das was du überlegt hast, es erzeugt erst einen Pointer, wechselt dann den Typ des Pointer und greift über den Pointer im neuen Typ auf die Daten zu.

In C++ gibt es reinterpret_cast<>, das ist einfacher zu verstehen.

Coda
2011-01-12, 21:08:12
reinterpret_cast funktioniert aber leider auch nur bei Pointern. Als hätte man dann

int sint = *(reinterpret_cast<int*>(&uint));

Flyinglosi
2011-01-13, 00:28:42
danke für den Tipp. hat mir sehr weiter geholfen :biggrin: