如何在c中打印百分号(%)

时间:2013-07-21 17:12:27

标签: c operators percentage

我是C的初学者,我想知道为什么这个程序不打印%sign?

代码是:

#include<stdio.h>

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

4 个答案:

答案 0 :(得分:62)

你的问题是你必须改变:

printf("%"); 

printf("%%");

或者你可以使用ASCII码并写:

printf("%c", 37);

:)

答案 1 :(得分:14)

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

来自comp.lang.c FAQ list · Question 12.6

  

使用printf打印%符号很棘手的原因是%是   基本上是printf的转义字符。每当printf看到%时,它   期待跟着一个角色告诉它下一步该做什么。   双字符序列%%被定义为打印单个%。

     

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

所以必须键入printf("%%");来打印单个%的原因是printf函数中定义的内容。 %是printf&的一个转义字符,而\是编译器的转义字符。

答案 2 :(得分:7)

使用"%%"man page描述了这一要求:

  

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

答案 3 :(得分:1)

尝试以这种方式打印

printf("%%");