C输出问题

时间:2011-04-05 12:08:25

标签: c linux printf

为什么它的输出是%% ??

#include<stdio.h>
int main(void)
{
        printf("% % %\n");
return 0;
}

2 个答案:

答案 0 :(得分:4)

这是未定义的行为,绝对任何都可能发生。 C99第7.19.6.1/9节规定:

  

如果转换规范无效,则行为未定义。

并且前面的任何部分都不允许空格的转换说明符。它们仅限于集合diouxXfFeEgGaAcsPn%中的字符。

答案 1 :(得分:3)

如果您使用一个%,它会将其视为字符串(因为它缺少其他说明符)并输出%。如果您使用%%,则在输出中打印%。如果您使用%%%,前两个将被视为输出%,最后一个将被视为单个“字符”。所以你只得到两个%