printf("%%d%d" 123); C是如何样编译的呢

printf(%%d%d, 123) C是怎么样编译的呢?printf( %%d%d ,123)C是怎么样编译的呢?输出%d123[解决办法]

printf("%%d%d", 123); C是怎么样编译的呢?
printf( "%%d%d ",   123);  
C是怎么样编译的呢?
输出
%d123

[解决办法]
想输出%
就得用%%
比如:printf( "%f%% ",1.0/3);
这个和转意字符有类似
------------------------------------去看看任何一本c语言的书应该都有提起
至于为什么?
你参考linux中printf的实现会发现
在vsprintf中(printf是调用vsprintf实现的)在找到%后的switch最后的default中
是这样的:
if(*fmt!= '% ')
*str++= '% ';
if(*fmt)
*str++= '% ';
.
.
.
.
即;如果%后面不是格式化参数就直接把他写到str中(在这里也就是显示出来啦)
----------------
不知道说清楚没。。。。