可能重复:
C output question…
为什么它的o / p是%% ??
int main(void)
{
printf("%%%\n");
return 0;
}
而对于以下程序,o / p是%?
int main(void)
{
printf("%%%");
return 0;
}
可以告诉我其实差异在哪里吗?
答案 0 :(得分:4)
这是未定义的行为。 C99第7.19.6.1/9节规定:
如果转换规范无效,则行为未定义。
并且前面的任何部分都不允许空格的转换说明符。它们仅限于集合diouxXfFeEgGaAcsPn%
中的字符。