`void main(){
char *s="\ta\018bc";
for(;*s!='\0';s++){
printf("%c",*s);
printf("*\n");
}
}``
这个程序输出的结果是有6个*
'\01'
为什么会被认为是一个字符 而不是 '\0' 和 '1’
两个字符
https://zhidao.baidu.com/question/2119310963719467387.html 这里可以解决你的问题 你看看 希望帮到你
将*s="\ta\018bc"改成*s="\ta\017bc"后,系统认为是\017而不是\01和7,
应该是因为编译系统的识别策略,从前向后挨个字符识别,要求认为尽可能长地将 \ 后的字符看成一个整体,只要是能够当成一个整体的就尽量当作一个
整体,确实无法认为是一个整体才拆分。
\nnn
表示其后为1至3位(最多3位)八进制数,
如果遇到不是八进制数,如题中的'8'(八进制数范围为0-7),则终止转义。