acg*_*ant 19 c printf escaping special-characters
该printf()文件说,如果有人想打印%在C,他可以使用:
printf("%%")
Run Code Online (Sandbox Code Playgroud)
为什么不是:
printf("\%")
Run Code Online (Sandbox Code Playgroud)
和其他特殊字符一样?
Eri*_*hil 37
解释程序的源文本时,编译器会处理反斜杠.因此,常见的结果是源文本"\%"生成一个包含"%"的字符串.
格式字符串由printf例程解释,因此它处理传递给它的字符.到这个时候,反斜杠不再存在,所以printf永远不会看到它.
从技术上讲,\%字符串文字中不合法.字符\开始的转义序列,并唯一合法转义序列在C中所列2011 6.4.4.4 1.他们\后面',",?,\,a,b,f,n,r,t,v,一到三个八进制数字,x和十六进制数字,u四十六进制数字,或U八个十六进制数字.
如果printf设计为反斜杠会逃脱一个百分比,那么你必须通过转义源文本中的反斜杠来传递反斜杠,所以你必须写:
printf("\\%");
Run Code Online (Sandbox Code Playgroud)