为什么这个程序不打印%
标志?
#include <stdio.h>
main()
{
printf("%");
getch();
}
你的问题是你必须改变:
printf("%");
到
printf("%%");
或者您可以使用 ASCII 代码并编写:
printf("%c", 37);
:)
本主题中没有解释为什么要打印百分号。必须键入%%
而不是例如带有百分比的转义字符 - \%
。
来自comp.lang.c 常见问题列表 · 问题 12.6:
用 printf 打印 % 符号很棘手的原因是 % 本质上是 printf 的转义字符。每当 printf 看到一个 % 时,它都希望它后面跟着一个字符,告诉它接下来要做什么。两个字符序列 %% 被定义为打印单个 %。
要了解为什么 % 不起作用,请记住反斜杠 \ 是编译器的转义字符,并控制编译器在编译时如何解释源代码字符。然而,在这种情况下,我们想要控制 printf 在运行时如何解释其格式字符串。就编译器而言,转义序列 % 是未定义的,并且可能导致单个 % 字符。\ 和 % 都不太可能通过 printf,即使 printf 准备特别对待 \。
因此,必须键入printf("%%");
才能打印单曲%
的原因是 printf 函数中定义的。%
是 printf 和\
编译器的转义字符。
使用"%%"
. 手册页描述了这个要求:
%
写入“%”。没有参数被转换。完整的转换规范是'%%
'。
试试这样打印
printf("%%");