Bio: C - casten

Beitrag lesen

Sup!

So wie's aussieht (so wie ich den C-Standard verstehe), kann man relativ ungefährdet signed integer auf unsigned integer casten - auch wenn der (Rang des) unsigned integer gleich groß oder kleiner als der (Rang des) signed integer ist und darum der signed-Wert eigentlich nicht in den unsigned umgeformt werden kann, ohne das Vorzeichen oder mehr zu verpfuschen.

sint32 a = 0xffffffff;
uint32 b = (uint32)a; a = 0xffffffff

Wenn man jedoch in die andere Richtung casten will, ist das Ergebnis angeblich "implementation-specific".

uint32 a = 0xffffffff;
sint32 b = (sint32) a; b = ???

Es scheint allerdings keine Implementierung zu geben, wo nicht einfach die Bit-Repräsentation als signed integer interpretiert wird.

Oder hat jemand schonmal irgendein Problem beim casten von unsigned int auf (vom Rang gleich grosses oder kleineres) signed int erlebt?

Gruesse,

Bio

--
Never give up, never surrender!!!