C语言字符串中的转义'\'的问题

`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),则终止转义。