C语言关于字符串长度的问题

main()
{
char str[]="\La\016ef";
printf("%d\n",sizeof(str));
}
程序的运行结果为6,我明白,但是如果将字符串改为"\La\018ef";,
就是把6改为其他的数字,结果就为7了,为什么?谢谢了。

为什么不求 strlen 而是 sizeof 呢?
第一,sizeof 会多算一个字符串结束符
第二,8进制数的处理,编译器会将 \0 能当做一个字节8进制的数做为一个字符处理,否则算一个单独的字符。

 \016  当做8进制处理 
 \018  不会当做8进制

追问一下
\L 明显是不符合转义字符的定义的
所有的编译当会把它当一个字符'L'处理吗?
gcc会报wanring
warning: unknown escape sequence: '\L' [enabled by default]
把它当'L'处理

唉 楼主应该 看一下 转义这章 \ddd代表的含义 以及用法 你见过在八进制中出现8这个数字吗 就相当于 你见过在二进制中出现2这个数字吗