如何在c 中打印百分号(%)
我是C的初学者,我想知道为什么这个程序不打印%符号?
代码是:
#include main() { printf("%"); getch(); }
你的问题是你必须改变:
printf("%");
至
printf("%%");
或者你可以使用ASCII码并写:
printf("%c", 37);
🙂
在本主题中没有解释为什么要打印一个必须键入%%
百分号,而不是例如带百分比的转义字符 – \%
。
来自comp.lang.c常见问题列表·问题12.6 :
使用printf打印%符号很棘手的原因是%本质上是printf的转义字符。 每当printf看到一个%时,它都会预期会跟着一个字符告诉它接下来要做什么。 双字符序列%%被定义为打印单个%。
要理解\%无法工作的原因,请记住反斜杠\是编译器的转义字符,并控制编译器在编译时如何解释源代码字符。 但是,在这种情况下,我们想要控制printf在运行时如何解释其格式字符串。 就编译器而言,转义序列\%是未定义的,并且可能导致单个%字符。 即使printf已经准备好专门处理\,也不太可能将\和%传递给printf。
所以必须输入printf("%%");
打印单个%就是printf函数中定义的内容。 %是printf和\ of编译器的转义字符。
使用"%%"
。 手册页描述了此要求:
%
A’%’被写入。 没有参数被转换。 完整的转换规范是’%%
‘。
尝试以这种方式打印
printf("%%");