Duda Ejercicio1

Duda Ejercicio1

de Nicolas Esteche Grai -
Número de respuestas: 0

Buenas tardes, 

Probando el código incluido en el ejercicio1 parte a en una compilador de C, me surgió la siguiente duda:

Para la variable "a" (short a = 0xA87B;) el compilador almacena el valor FFFFA87B (o por lo menos esto me muestra al imprimir utilizando %x con printf). Pero si en lugar de usar el tipo "short", lo remplazo por "unsigned short", si se imprime el valor 0xA87B. Entiendo que la diferencia puede venir porque si tomamos 0xA87B como entro sin signo, su valor es mayor que el máximo numero positivo representable en una variable de tipo short, pero no en una de tipo unsigned short, pero desconozco por que esta sucediendo esto 

Quería saber cual de los dos valores es el correcto para el desarrollo de este tipo de ejercicios


Como ejemplo, tomando la parte a del ejercicio, para el código

short a = 0xA87B;

short b = 0x771C;

short c = a | b;

char d = c >> 4;


Creo que, siguiendo la metodología del curso, los valores para las 4 variables serian a=0xA87B, b = 0x771C, c=0xFF7F y d=F7. Pero con el problema previamente mencionado, los valores que obtengo son a=FFFFA87B, b=771C, c=FFFFFF7F y d=FFFFFFF7


Muchas gracias,

Nicolas