void main()
{
char s[]="\12345s\n";
printf("%d",sizeof(s));
}当我编译它时,它给出了6。我不明白为什么它会给出8个实例中的6个。比如{'\1','2','3','4','5','s','\n'}
请任何人说出原因,我想要一些深刻和明确的解释。我会感谢他们的。
发布于 2011-11-23 19:21:21
因为\123被认为是一个字符,所以它是一个转义序列(八进制)。因此,sizeof计算'\123'、'4'、'5'、's'、'\n'和结束'\0'的5个字符。
发布于 2012-09-23 17:26:39
char s[]="\12345s\n";\表示转义序列,如果数字最多使用3位,则默认情况下为八进制。因此,\123将以八进制计算为-> 8*8*1 + 8*2 +3= 83,因此如果打印此代码,您会发现它S45s为S -> Ascii等价物83,因此大小也是4。
https://stackoverflow.com/questions/8241270
复制相似问题