#include<stdio.h>
main()
{
char x ;
x = 'a' ;
printf("%d",x);
}
在这个%d格式说明符中应该读取4个字节是整数格式说明符,但x是一个字符仅存储在1个字节中。所以剩下的3个字节应该有垃圾值,输出应该是随机的。 但是输出始终是97,这是&#39; a&#39;的ASCII值。 任何人都可以告诉格式说明符是如何工作的吗?
答案 0 :(得分:12)
与函数的声明参数类型不匹配的函数参数(即因为函数允许变量参数,如printf
,或者因为没有提供函数原型)经历默认参数促销(参见C11 6.5.2.2),它将char
值转换为int
或unsigned int
的值。因此,将a
传递给printf
符合%d
的要求。