C语言中printf("%d\n",strlen("\t\"\065\xff\n"));的输出为何是5?

来源:百度知道 编辑:UC知道 时间:2024/05/06 10:47:45
我上机调试了,确实输出值为5;在我运行printf("%d\n","\t\"\065\xff\n")时,输出的字符串显示为:"5,"5前面有8个空格(可能是制表位),"5后面有两个空格(可能是\xff所至),但该字符串的长度为什么是5?请高手指点!
谢谢!

printf函数输出strlen()函数执行的结果,strlen()计算字符串"\t\"\065\xff\n"的字符个数,该字符串中有5个元素,所以会输出5,5个元素分别是:
  1、\t:换码符'\t',表示水平制表位(horizeontal tab)。
  2、\" :双引号
  3、\065:字符\后面的数字065是三个八进制数,它是数字5的ASCII码值
  4、\xff:字符\x后面的数字ff是两个十六进制数。
  5、\n : 换行字符。

  这5个字符都是转义字符。转义字符是C语言中表示字符的一种特殊形式。转义字符以反斜'\'开头,后面跟一个字符或一个八进制或十六进制数表示。转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。

\t(制表符)
\"(引号)
\065(八进制转义序列,对应的ASCII字符是5)
\xff(十六进制转义序列,对应的十进制ASCII码是255,在扩展ASCII中)
\n(回车换行符)

共5个字符.

\t(制表符)
\"(引号)
\065(八进制转义序列,对应的ASCII字符是5)
\xff(十六进制转义序列,对应的十进制ASCII码是255,在扩展ASCII中)
\n(回车换行符)

对的

因为本来就是5