C输出问题
为什么它的输出是%%?
#include<stdio.h>
int main(void)
{
printf("% % %\n");
return 0;
}
Why its output is %%??
#include<stdio.h>
int main(void)
{
printf("% % %\n");
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是未定义的行为,绝对任何事情都可能发生。 C99 第 7.19.6.1/9 节规定:
并且前面的部分都不允许使用空格的转换说明符。它们仅限于
diouxXfFeEgGaAcsPn%
集合中的字符。It's undefined behaviour and absolutely anything can happen. Section 7.19.6.1/9 of C99 states:
and none of the preceding sections allow a conversion specifier of a space. They are limited to characters from the set
diouxXfFeEgGaAcsPn%
.如果您使用一个
%
,它会将其视为字符串(因为它缺少其他说明符)并输出%
。如果使用%%
,则在输出中打印%
。如果您使用%%%
,前两个将被视为输出%
,最后一个将被视为单个“字符”。所以你只能得到两个%
。If you use one
%
, it sees it as string (because it lacks other specifiers) and output%
. If you use%%
, it is to print%
in output. if you use%%%
the first two will be considered as outputting%
and the last one as single "character". so you only get two%
.