Is it for the same reason as char + char = int? Why? ?
I got different results on this source code by different compilers
#include <stdio.h>
int main() {
char a = 100, b = 100;
printf("%d\n", a + b);
scanf("%d%d", &a, &b);
printf("%d\n", a + b);
}