Negative Zahlen in C nach rechts verschieben

Ich habe C-Code, in dem ich Folgendes mache.

int nPosVal = +0xFFFF;   // + Added for ease of understanding
int nNegVal = -0xFFFF;   // - Added for valid reason

Nun, wenn ich es versuche

printf ("%d %d", nPosVal >> 1, nNegVal >> 1);

Ich bekomme

32767 -32768

Wird das erwartet?

Ich kann mir sowas schon denken

65535 >> 1 = (int) 32767.5 = 32767
-65535 >> 1 = (int) -32767.5 = -32768

-32767.5 wird also auf -32768 gerundet.

Ist dieses Verständnis richtig?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage