short -> ushort

19/11/2010 - 13:29 von Curtis Newton | Report spam
Hallo,

wie ist denn das bei der Umwandlung von short nach unsigned short? Ich
will den Wertebereich erhalten, nicht die absoluten Werte (geht ja auch
nicht). Differenzen sollen halt gleich bleiben.

Habe ich jetzt mal probiert:

short t=-3;
int it=t;
it-=SHRT_MIN;
unsigned short us=t-SHRT_MIN;
printf("%i\t%i", it, us); // <-- gleicher Wert!

Geht. Ist das vom Standard garantiert? Wird der short automatisch zur
Rechnung in int konvertiert? Mir ist so.

C.
Bye
 

Lesen sie die antworten

#1 Marcel Müller
19/11/2010 - 17:20 | Warnen spam
Curtis Newton wrote:
wie ist denn das bei der Umwandlung von short nach unsigned short? Ich
will den Wertebereich erhalten, nicht die absoluten Werte (geht ja auch
nicht). Differenzen sollen halt gleich bleiben.

Habe ich jetzt mal probiert:

short t=-3;
int it=t; // -3
it-=SHRT_MIN; // -3-SHORT_MIN


Da SHORT_MIN negativ ist, bekommt man jetzt eine positive Zahl.
Und bei t=0 könnte es einen Überlauf geben, denn in einer
Implementierung könnte short und int gleich lang sein.
unsigned short us=t-SHRT_MIN; // -3-SHORT_MIN


Aufgrund des Vorzeichens liegt man auch noch im Wertebereich von short.
Und bei t=0 gibt es jetzt üblicherweise einen Überlauf.
printf("%i\t%i", it, us); // <-- gleicher Wert!

Geht. Ist das vom Standard garantiert?



für t=-3: ja.
für t=+3 knallt es.

Wird der short automatisch zur
Rechnung in int konvertiert? Mir ist so.



Yep.


Marcel

Ähnliche fragen