char 数组的 SizeOf 函数的工作原理

发布于 2024-12-17 15:06:37 字数 225 浏览 0 评论 0原文

void main()
{
   char s[]="\12345s\n";
   printf("%d",sizeof(s));
}

当我编译它时,它给出 6。我不明白为什么它给出 6 而不是 8。 就像 {'\1','2','3','4','5','s','\n'}

请有人告诉我这样做的原因,我想一些深刻而清晰的解释。我会感谢他们。

void main()
{
   char s[]="\12345s\n";
   printf("%d",sizeof(s));
}

When i compile it it giving 6. I am not geting why it is giving 6 insted of 8.
Like {'\1','2','3','4','5','s','\n'}

Please can anybody tell the reason for this, I want some deep and clear explanation. I will be thankful to them.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

最丧也最甜 2024-12-24 15:06:37

由于 \123 被视为一个字符,因此它是一个转义序列(八进制)。因此 sizeof 计算 5 个字符 '\123', '4', '5', ' s''\n' 和结尾 '\0'

Because \123 is considered one character, it's an escape sequence (octal). So sizeof calculates 5 characters '\123', '4', '5', 's', '\n', and the ending '\0'.

樱花坊 2024-12-24 15:06:37
char s[]="\12345s\n";

\ 表示转义序列
如果数字最多使用 3 位,则默认为八进制。
所以 \123 将以八进制计算为
-> 8*8*1 + 8*2 + 3 = 83
所以如果你打印这个你会发现它
S45s
作为S->相当于 83 的 Ascii
因此大小也是 4。

char s[]="\12345s\n";

\ indicates escape sequence
It is octal by default if numbers are used upto 3 places.
So \123 will be evaluated in octal as
-> 8*8*1 + 8*2 + 3 = 83
So if you print this you would find it
S45s
As S -> Ascii equivalent of 83
Hence the size is also 4.

驱逐舰岛风号 2024-12-24 15:06:37
char s[]="\12345s\n"

等于:

char s[] = { '\123', '4', '5', 's', '\n', 0 }

所以总共有六个元素。

char s[]="\12345s\n"

is equal to:

char s[] = { '\123', '4', '5', 's', '\n', 0 }

so six elements in total.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文