我在C中运行了以下代码段:
printf("%%%\n");
我得到了输出“%”(没有引号)。有谁能解释究竟发生了什么? 为什么我们只有一个%的签到结果?
答案 0 :(得分:4)
%%
将打印%
。 %\n
不是有效的conversion specifier。
您应该始终启用警告。请参阅以下内容:
warning: unknown conversion type character 0xa in format [-Wformat=]
printf("%\n");
^
如评论中所述,这是undefined behavior,因为根据C11 standard,如果符合以下情况,则行为是未定义的行为:
- 找到无效的转换规范,格式为其中一个格式化输入/ ouptut函数[...]