在阅读了一些K&R CI之后,我发现printf可以“自己识别%%”,我对此进行了测试,并打印出了“%”,然后尝试了“ \%”,它也打印了“%”。
那么,有什么区别吗?
编辑代码请求:
#include <stdio.h>
int main()
{
printf("%%\n");
printf("\%\n");
return 0;
}
输出:
%
%
使用-o与GCC一起编译
GCC版本:gcc(SUSE Linux)4.8.1 20130909 [gcc-4_8-branch修订版202388]
%%
不是C转义序列,而是printf格式化程序,其特殊字符的作用类似于转义。
\%
是非法的,因为它具有C转义序列的语法,但没有定义的含义。除标准列出的几个外,转义序列是特定于编译器的。编译器很可能会忽略反斜杠,并且printf
在运行时看不到任何反斜杠。如果有的话,它会在输出中打印反斜杠,因为反斜杠不是专用于printf
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句