#include<stdio.h>
#include<conio.h>
void main()
{
printf("%%%%%");
}
上述程序的输出是%%%,怎么回事?
答案 0 :(得分:1)
这很简单,因为标准说:
4每个转换规范由字符%引入。在%之后,以下 按顺序出现:
[...]
8转换说明符及其含义为:
[...]
% - 写入%字符。没有参数被转换。完整的 转换规范应为%%。
(来自ISO / IEC 9899:TC3 - &gt;§7.19.6.1库)
答案 1 :(得分:1)
您有未指定的行为。你有5%的格式字符串。 A%之后是格式字符,它控制printf对其参数执行的操作。所以第一个%后跟另一个%,printf输出为%。同样是第3和第4%。
但是,第5%后面跟一个空字节。并引用printf的手册页:
如果格式操作数中的字符序列以'%'开头 字符,但不形成有效的转换规范, 行为未指明。
因此它可以打印%,不打印,崩溃,......
答案 2 :(得分:0)
这取决于编译器/平台...您使用<conio.h>
的事实告诉我您在DOS / Windows平台上。
PS:请参阅What are the different valid prototypes of 'main' function?