%d格式说明符如何工作?

时间:2015-12-07 10:09:07

标签: c

 #include<stdio.h>
 main()
 {
     char x ;
     x = 'a' ;
     printf("%d",x);
 }

在这个%d格式说明符中应该读取4个字节是整数格式说明符,但x是一个字符仅存储在1个字节中。所以剩下的3个字节应该有垃圾值,输出应该是随机的。 但是输出始终是97,这是&#39; a&#39;的ASCII值。 任何人都可以告诉格式说明符是如何工作的吗?

1 个答案:

答案 0 :(得分:12)

与函数的声明参数类型不匹配的函数参数(即因为函数允许变量参数,如printf,或者因为没有提供函数原型)经历默认参数促销(参见C11 6.5.2.2),它将char值转换为intunsigned int的值。因此,将a传递给printf符合%d的要求。