当我按照代码运行时:
#include<stdio.h>
#include<conio.h>
void main(){
clrscr();
printf("%%");
getch();
}
我得%%作为输出?
这种逻辑背后可能是什么原因?
答案 0 :(得分:4)
这就是printf
的作用:它是打印格式化的(f表示格式化)。它使用%
作为格式化字符。它是唯一的保留字符,需要进行转义才能表示自己,即%%
。有关格式http://www.cplusplus.com/reference/cstdio/printf/的更多信息,请参阅手册。
P.S。永远不要将不属于程序一部分的字符串作为第一个参数。要打印由用户输入的字符串msg,请执行printf(%s,msg);
,否则您的代码中将出现安全漏洞。
答案 1 :(得分:1)
来自标准ISO / IEC 9899:1999(E)
7.19.6.1
每个转换规范都由字符%。
引入转换说明符及其含义为:
% - 写入%字符。没有参数被转换。完整的 转换规范应为%%。
答案 2 :(得分:1)
对于C printf,%
是一个特殊字符,通常表示在该位置替换的参数:printf("Hello, %s!\n", "world!");
导致&#34; Hello,world&#34;。根据您要输出的数据,您可以在%之后添加许多不同的内容。这就留下了问题&#34;如果我想打印一个百分号符号&#34;?
解决方案:使用%%
。
特殊转义字符\
也是如此。 &#34; \ n&#34;意味着打印一个新行。如果要实际打印正斜杠,则必须将其放置两次\\
答案 3 :(得分:1)
%进入格式说明符。
例子。
当我们写printf("%d",20);
时,它会打印20而不是%d。因为编译器将%视为格式说明符。在编译器的思想中,%的含义有点特殊。
所以,如果你想要&#34;%&#34;应该是输出,然后你必须写printf("%%")
。这里第一个%符号将禁止%格式说明符的含义,并将%作为输出打印。