omportamiento extraño de scanf para int corto
El código es el siguiente
#include <stdio.h>
main()
{
int m=123;
int n = 1234;
short int a;
a=~0;
if((a>>5)!=a){
printf("Logical Shift\n");
m=0;
}
else{
printf("Arithmetic Shift\n");
m=1;
}
scanf("%d",&a);
printf("%d\n", m);
}
después de la líneascanf("%d",&a);
el valor de m se convierte en0.
Sé que puede ser causado por el scanf: el tipo de a es corto y el tipo de entrada es int. Pero, ¿cómo puede afectar esto el valor de m?
Muchas gracias