这是因为您的程序调用了未定义的行为.你可能得到任何预期或意外的东西.
如果转换规范无效,则行为未定义 .335)如果任何参数不是相应转换规范的正确类型,则行为未定义.
printf("%f",a); ^ %f specifier expects arguments of type float/ double.
并且%f被替换为%c它正在打印B.我没有理由
字符的ASCII码B是66.使用%c说明符打印(可打印)字符本身.
B
66
%c