omportamento estranho do scanf para short int
o código é o seguinte:
#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);
}
after the linescanf("%d",&a);
o valor de m passa a0.
Eu sei que isso pode ser causado pelo scanf: o tipo de a é curto e o tipo de entrada é int. Mas como isso pode afetar o valor de m?
Muito obrigado