若有以下说明和语句,则输出的结果是

char sp[ ]=“\ta\092\n”;
printf(“%d”, strlen(sp));
请详解,谢谢

第1个回答  2011-01-16
转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如单撇号( '),双撇号( ")和反斜杠( \)等。转义字符用反斜杠\后面跟一个字符或三位八进制或两位十六进制数表示。

转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) 008
\f 换页(FF) 012
\n 换行(LF) 010
\r 回车(CR) 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
\\ 反斜杠 092
\? 问号字符 063
\' 单引号字符 039
\" 双引号字符 034
\0 空字符(NULL) 000
\ddd 任意字符 三位八进制
\xhh 任意字符 二位十六进制

\ta\092\n
是拆分成\t a \0 9 2 \n
\092之所以拆分成\0 9 2是因为9不是八进制的数字
strlen遇到\0,所以输出2
如果把9改成8以下的数字,如:char sp[ ]=“\ta\042\n”; 则拆分成\t a \042 \n
printf(“%d”, strlen(sp)); 则输出4
第2个回答  2011-01-16
输出是2
第一个字符是'\t'
第二个字符是'a'
'\0'为字符串结束标记
所以输出2本回答被网友采纳