求告诉我详细的过程 急!

设有说明语句:char c[20]="101\101\0101";则打印语句printf("%d,%d,%s\n",sizeof(c),strlen(c),c);的输出结果是

101\101\0101
在C中\是转义字符,后面跟数字的时候,最多可以有3个8进制数,所以
\101是一个字符
\010是一个字符
sizeof(c)计算的是数组的大小,是20
strlen(c)计算的是字符串长度,是6

\101是8进制,也就是65,也就是字符A
\010是8进制,也就是8,是退格符,把前面的字符A删掉了
所以%s显示的是1011
最终显示结果是20,6,1011


\101 是8进制字符编码,会转成 A 字符
\010 会转成 退格字符
生成的字符串长度strlen(c)是6
sizeof(c)字符串占用内存是20,也就是c[20]设置的长度
在输出c字符串时 A 字符会被 退格字符 删除,结果输出1011

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img