为什么它的输出是%%?
#include<stdio.h> int main(void) { printf("% % %\n"); return 0; }
这是未定义的行为,绝对会发生任何事情。 C99的第7.19.6.1/9节规定:
如果转换规范无效,则行为是不确定的。
而前面的部分都没有允许空间的转换说明符。 它们仅限于diouxXfFeEgGaAcsPn%字符。
diouxXfFeEgGaAcsPn%
如果您使用一个% ,则将其视为字符串(因为缺少其他说明符)并输出% 。 如果使用%% ,则在输出中打印% 。 如果您使用%%% ,前两个将被视为输出% ,最后一个被视为单个“字符”。 所以你只得到两个% 。
%
%%
%%%