#include<stdio.h>
void main()
{
int n = 2;
printf("%c",&n);
}
Run Code Online (Sandbox Code Playgroud)
输出:L
在使用%d它当然给出了变量的地址,n但为什么在使用时输出L %c?
它是未定义的行为,因为您使用了错误的格式说明符.
C11标准:7.21.6.1:第9段:
如果转换规范无效,则行为 未定义.如果任何参数不是相应转换规范的正确类型,则行为未定义.
这意味着如果printf使用错误的格式说明符调用,可能会发生任何事情.