请教一个在MDK环境下关于printf的奇怪问题

2019-07-21 02:49发布

现象

程序1

char abc = -123;
printf("magic number = %d ", -123);
printf("abc = %d ", abc);

打印结果:
magic number = -123
abc = 133

程序2

short abc = -123;
printf("magic number = %d ", -123);

printf("abc = %d ", abc);

打印结果:
magic number = -123
abc = -123

疑问

为什么printf打印char变量时,打印不了负值,会转为正值?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。