#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
printf("\%\n");
int x = 10;
printf("\%d\n", x);
return 0;
}
输出:
10
(第一行不打印) 那么逃脱序列正在做什么呢?如果它在\之后没有读取%,则它不应该在第二个printf语句中打印10。
答案 0 :(得分:3)
\%
不是有效的转义序列。您的编译器应该发出类似
[Warning] unknown escape sequence: '\%' [enabled by default]
您需要%%
才能打印%
,否则可能会打印或不打印。
答案 1 :(得分:3)
这里有两个级别的处理:
解析字符串文字。这是\
生效的地方。 \n
被换行符替换,其他转义也会发生。
printf()
机制。这个只处理%
作为特殊字符,并解析后面的任何内容,以格式化其中一个参数。
使用\%
混合这两个,无论\
上发生什么(如果%
被抑制),(2)都不会注意到\
因为它被(1)“吃掉”了。