void main()
{
char s[]="\12345s\n";
printf("%d",sizeof(s));
}
当我编译它时,它给出了6.我没有说明为什么它给了6个8。
与{'\1','2','3','4','5','s','\n'}
请有人告诉原因,我想要一些深刻而明确的解释。我会感激他们。
答案 0 :(得分:12)
因为\123
被认为是一个字符,所以它是一个转义序列(八进制)。因此sizeof
计算5个字符'\123'
,'4'
,'5'
,'s'
,'\n'
和结尾'\0'
。
答案 1 :(得分:2)
char s[]="\12345s\n";
\
表示转义序列
如果数字最多使用3个位置,则默认为八进制。
所以\ 123将以八进制的形式进行评估
- > 8 * 8 * 1 + 8 * 2 + 3 = 83
所以,如果你打印这个,你会发现它
S45s
作为S - > Ascii相当于83
因此,大小也是4。
答案 2 :(得分:1)
char s[]="\12345s\n"
等于:
char s[] = { '\123', '4', '5', 's', '\n', 0 }
总共六个要素。