为什么它的输出是%% ??
#include<stdio.h>
int main(void)
{
printf("% % %\n");
return 0;
}
答案 0 :(得分:4)
这是未定义的行为,绝对任何都可能发生。 C99第7.19.6.1/9节规定:
如果转换规范无效,则行为未定义。
并且前面的任何部分都不允许空格的转换说明符。它们仅限于集合diouxXfFeEgGaAcsPn%
中的字符。
答案 1 :(得分:3)
如果您使用一个%
,它会将其视为字符串(因为它缺少其他说明符)并输出%
。如果您使用%%
,则在输出中打印%
。如果您使用%%%
,前两个将被视为输出%
,最后一个将被视为单个“字符”。所以你只得到两个%
。