sizeof中空字符'\0'问题
在看sizeof时遇到这样一个问题,
char s1[]="a\0bc";
int n1=sizeof(s1);//结果为5(是因为空字符字符'a'和'b'中的'\0'占一个字节吗?)
如果
char s2[]="a\01bc";
char s3[]="a\016bc";
int n2=sizeof(s2);
int n3=sizeof(s3);//为什么n2、n3结果还是5??
而
char s4[]="a\0167bc";
int n4=sizeof(s4);//为什么n4此时结果是6??
sizeof的原理我知道,但这种情况下的存储我就糊涂了,求指导!
[解决办法]
s1 a \0 b c \0
s2 a \01 b c \0
s3 a \016 b c \0
s4 a \016 7 b c \0
转义符后面接0开头的数字表示这是一个8进制数,后面最多接2个数字(3个就超过char的容纳范围了)