Asignar a una variable un shift de otra de tamaño menor

Asignar a una variable un shift de otra de tamaño menor

de Joel Cabrera Dechia -
Número de respuestas: 1

Buenas!

Primero disculpas por cómo está planteada la pregunta, no sé como darla a entender.
Básicamente quería consultar sobre qué pasa al operar con shifts cuando tenemos variables de distinto tamaño. Por ejemplo:

char p = 1;
short n1 = p << 9;
Lo probé en C* y al momento de imprimir n1 me da 512, como si en realidad p se hubiera "agrandado". Mientras que si primero hago el shift (en una línea aparte) y luego la asigno a n1 me imprime 0. Mi pregunta es, al operar funciona todo de otra manera? p se "transformó" en short? Tiene que ver con lo de precisión extendida que se habló en teórico?

Saludos,

En respuesta a Joel Cabrera Dechia

Re: Asignar a una variable un shift de otra de tamaño menor

de Federico Rivero -
Hola Joel!

Lo que mencionás al final es correcto. Al momento de realizar la operación, se realiza con precisión extendida. Luego, al asignar a short, ahí sí se asignan los 16 bits menos significativos del resultado (en este caso 512).

Saludos,
Federico