试图理解printf带有char说明符的指针(%c)

-1 c format-specifiers

#include<stdio.h>
void main()
{
   int n = 2;
   printf("%c",&n);
}
Run Code Online (Sandbox Code Playgroud)

输出:L

在使用%d它当然给出了变量的地址,n但为什么在使用时输出L %c

msc*_*msc 8

它是未定义的行为,因为您使用了错误的格式说明符.

C11标准:7.21.6.1:第9段:

如果转换规范无效,则行为 未定义.如果任何参数不是相应转换规范的正确类型,则行为未定义.

这意味着如果printf使用错误的格式说明符调用,可能会发生任何事情.