C输出问题

发布于 2024-10-30 19:09:48 字数 124 浏览 0 评论 0原文

为什么它的输出是%%?

#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

秋风の叶未落 2024-11-06 19:09:48

这是未定义的行为,绝对任何事情都可能发生。 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:

If a conversion specification is invalid, the behavior is undefined.

and none of the preceding sections allow a conversion specifier of a space. They are limited to characters from the set diouxXfFeEgGaAcsPn%.

三生路 2024-11-06 19:09:48

如果您使用一个 %,它会将其视为字符串(因为它缺少其他说明符)并输出 %。如果使用%%,则在输出中打印%。如果您使用 %%% ,前两个将被视为输出 % ,最后一个将被视为单个“字符”。所以你只能得到两个%

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 %.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文