这个运行答案怎么是5
#include <stdio.h>
main()
{char *s2="123\078\0xa";
printf("%d",strlen(s2));
}
#include <stdio.h>
#include<string.h>
main()
{char *s2="123\078\0xa";
printf("%d",strlen(s2));
}
蓝色的是八进制的转义字符,每个颜色算一个字符,遇到最后那个‘\0’为结束,
关于如何判断是不是八进制,\0后面的数不能超过7,所以最后那个\0表示的是字符串结束
回复 小青年:讲过的,但是当时讲的是一个三位的八进制转义,所以前面没有0,他特别说八进制不能写0;
2. 八进制转义字符
它是由反斜杠'/'和随后的1~3个八进制数字构成的字符序列。例如,'/60'、'/101'、'/141'分别表示字符'0'、'A'和'a'。因为字符'0'、'A'和'a'的ASCII码的八进制值分别为60、101和141。
字符集中的所有字符都可以用八进制转义字符表示。
如果你愿意,可以在八进制数字前面加上一个0来表示八进制转移字符。
3. 十六进制转义字符
它是由反斜杠'/'和字母x(或X)及随后的1~2个十六进制数字构成的字符序列。例如,'/x30'、'/x41'、'/X61'分别表示字符'0'、'A'和'a'。因为字符'0'、'A'和'a'的ASCII码的十六进制值分别为0x30、0x41和0x61。
可见,字符集中的所有字符都可以用十六进制转义字符表示。