ein integer in zwei short teilen
-
Ich meine eine Union wäre eine gute Lösung
union { unsigned int alles; unsigned short hälfte[2]; };
-
Ich meine eine Union wäre eine gute Lösung
union { unsigned int alles; unsigned short hälfte[2]; };
-
c++-er schrieb:
Ich meine eine Union wäre eine gute Lösung
Ist es aber nicht :p
-
plongor schrieb:
am einfachsten wäre es mit einem short pointer.
short getUpper( long value ) { short * ptr = (short*) &value; ++ptr; return *ptr; } short getLower( long value ) { short * ptr = (short*) &value; return *ptr; }undefiniert
c++-er schrieb:
Ich meine eine Union wäre eine gute Lösung
union { unsigned int alles; unsigned short hälfte[2]; };ebenfalls undefiniert
Natürlich muss die Repräsentation beider Typen entsprechend zueinander passen (also short: 16bit ohne padding, int: 32bit ohne Padding) - aber beide Verfahren (die auf das Gleiche hinauslaufen) haben dennoch aus dem gleichen Grunde (3.10/15) undefiniertes Verhalten.
-
Könnte mal jemand einen FAQ Beitrag dazu schreiben warum das undefiniert ist? Ich sehe das nämlich ziemlich oft das eine Union für sowas missbraucht wird.