C输出问题

时间:2011-04-05 12:30:24

标签: c

  

可能重复:
  C output question…

为什么它的o / p是%% ??

int main(void)
{
  printf("%%%\n");
  return 0;
}

而对于以下程序,o / p是%?

int main(void)
{
  printf("%%%");
  return 0;
}

可以告诉我其实差异在哪里吗?

1 个答案:

答案 0 :(得分:4)

这是未定义的行为。 C99第7.19.6.1/9节规定:

  

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

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