Números negativos que cambian a la derecha en C
Tengo el código C en el que hago lo siguiente.
int nPosVal = +0xFFFF; // + Added for ease of understanding
int nNegVal = -0xFFFF; // - Added for valid reason
Ahora cuando lo intento
printf ("%d %d", nPosVal >> 1, nNegVal >> 1);
yo obtengo
32767 -32768
¿Se espera esto?
Soy capaz de pensar algo como
65535 >> 1 = (int) 32767.5 = 32767
-65535 >> 1 = (int) -32767.5 = -32768
Es decir, -32767.5 se redondea a -32768.
¿Es correcto este entendimiento?