41

为什么这个程序不打印%标志?

#include <stdio.h>

main()
{
     printf("%");
     getch();
}
4

4 回答 4

85

你的问题是你必须改变:

printf("%"); 

printf("%%");

或者您可以使用 ASCII 代码并编写:

printf("%c", 37);

:)

于 2013-07-21T17:14:51.707 回答
24

本主题中没有解释为什么要打印百分号。必须键入%%而不是例如带有百分比的转义字符 - \%

来自comp.lang.c 常见问题列表 · 问题 12.6

用 printf 打印 % 符号很棘手的原因是 % 本质上是 printf 的转义字符。每当 printf 看到一个 % 时,它都希望它后面跟着一个字符,告诉它接下来要做什么。两个字符序列 %% 被定义为打印单个 %。

要了解为什么 % 不起作用,请记住反斜杠 \ 是编译器的转义字符,并控制编译器在编译时如何解释源代码字符。然而,在这种情况下,我们想要控制 printf 在运行时如何解释其格式字符串。就编译器而言,转义序列 % 是未定义的,并且可能导致单个 % 字符。\ 和 % 都不太可能通过 printf,即使 printf 准备特别对待 \。

因此,必须键入printf("%%");才能打印单曲%的原因是 printf 函数中定义的。%是 printf 和\编译器的转义字符。

于 2014-08-08T08:36:28.113 回答
8

使用"%%". 手册页描述了这个要求:

% 写入“%”。没有参数被转换。完整的转换规范是' %%'。

于 2013-07-21T17:13:37.917 回答
3

试试这样打印

printf("%%");
于 2013-07-21T17:52:34.120 回答