странное поведение scanf для краткого int
код выглядит следующим образом:
#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);
}
после линииscanf("%d",&a);
значение м становится0.
Я знаю, что это может быть вызвано scanf: тип a короткий, а тип ввода int. Но как это может повлиять на значение m?
Большое спасибо !