Pau*_*lch 30 c operators percentage
我是C的初学者,我想知道为什么这个程序不打印%符号?
代码是:
#include<stdio.h>
main()
{
printf("%");
getch();
}
Run Code Online (Sandbox Code Playgroud)
C_I*_*ner 66
你的问题是你必须改变:
printf("%");
Run Code Online (Sandbox Code Playgroud)
至
printf("%%");
Run Code Online (Sandbox Code Playgroud)
或者你可以使用ASCII代码并写:
printf("%c", 37);
Run Code Online (Sandbox Code Playgroud)
:)
mac*_*fij 16
在这个主题中没有解释为什么要打印必须键入的百分号,%%而不是例如具有百分比的转义字符 - \%.
来自comp.lang.c常见问题列表·问题12.6:
用printf打印%符号很棘手的原因是%本质上是printf的转义字符.每当printf看到一个%时,它都会预期会跟着一个字符告诉它接下来要做什么.双字符序列%%被定义为打印单个%.
要理解为什么\%不能工作,请记住反斜杠\是编译器的转义字符,并控制编译器在编译时解释源代码字符的方式.但是,在这种情况下,我们想要控制printf在运行时如何解释其格式字符串.就编译器而言,转义序列\%是未定义的,并且可能导致单个%字符.即使printf准备专门处理\,也不太可能将\和%传递给printf.
因此,必须键入printf("%%");以打印单个%的原因是printf函数中定义的内容.%是printf和\ of编译器的转义字符.
| 归档时间: |
|
| 查看次数: |
118522 次 |
| 最近记录: |