C:printf。输出是波动的,即它们不遵循模式

C:printf。输出是波动的,即它们不遵循模式,c,C,如果我执行printf%,则没有输出 如果我使用printf%%%,则输出与printf%%i.e%相同 现在printf%%的输出为%%。为什么会发生这种情况因为%用于“placholder”格式说明符,如printf中的%d或%s 因此,要实际打印%您必须写入%% 因此: 顺便说一句:如果打印奇数的%like:printf%,则可能会出现以下错误:[警告]格式为[-Wformat]的伪尾随“%”,仅%未转换任何参数,并且您什么也看不到 为了只打印%,您必须在打印之前使用%说明符 printf

如果我执行printf%,则没有输出

如果我使用printf%%%,则输出与printf%%i.e%相同

现在printf%%的输出为%%。为什么会发生这种情况

因为%用于“placholder”格式说明符,如printf中的%d或%s

因此,要实际打印%您必须写入%%

因此:

顺便说一句:如果打印奇数的%like:printf%,则可能会出现以下错误:[警告]格式为[-Wformat]

的伪尾随“%”,仅%未转换任何参数,并且您什么也看不到

为了只打印%,您必须在打印之前使用%说明符

printf("%%");
这同样适用于正在打印的任何数量的%

检查此链接:

与printf

如果转换规范无效,则行为未定义C11dr§7.21.6.1 9


%开始转换说明符,如%*d、%5f、%%打印单个“%”。如果没有正确的结尾,单独的%是无效的,因此可能会发生任何事情。

在询问此问题之前,您应该阅读的文档@Basile Starynkevitch我看过你提到的文件。尽管我对printf非常熟悉,但在那里我没有找到任何可以解决这个问题的方法。当然,C规范确实解决了这个问题。
printf("%%");