在编译以下代码时:
#include <stdio.h>
int main() {
printf("99% Invisible");
return 0;
}
在gcc 7.5.0中,我得到以下警告:
test.c: In function ‘main’:
test.c:4:16: warning: ' ' flag used with ‘%n’ gnu_printf format [-Wformat=]
printf("99% Invisible");
^
test.c:4:16: warning: 'I' flag used with ‘%n’ gnu_printf format [-Wformat=]
test.c:4:16: warning: format ‘%n’ expects a matching ‘int *’ argument [-Wformat=]
printf("99% Invisible");
~~~^
这是怎么回事?我在文档中没有看到提到""标志或"I"标志.代码输出99visible
,基本上忽略格式字符串中的空格和I,并遵循%n格式.
编辑:人们似乎误解了这个问题.我知道如何打印文字百分比,以及%n
的用途.我只是好奇这里发生了什么.
(另外,对于那些了解上下文的人来说:我知道所讨论的系统没有使用C,我只是好奇printf在这里做什么).