中文字符所占的字节数
小甲鱼在作业中演示了中文字符所占的字节数,代码如下:#include <stdio.h>
int main()
{
char str[] = "中";
int length, i;
length = sizeof(str) / sizeof(str);
printf("length of str: %d\n", length);
for (i = 0; i < length; i++)
{
printf("str[%d] = %d\n", i, str);
}
return 0;
}
小甲鱼给出的结果是:
https://xxx.ilovefishc.com/forum/201605/30/113637ihmcp88m1h1491y8.png
既然给出的长度是4,为什么说中文字符占3个字节?最后那个0为什么不算?这个0的意义是什么?
当然,我已验证这是对的,我自己的系统中给出的长度是3,占2字节。只是想不通这个0是什么,以及为什么是这样的。 本帖最后由 jackz007 于 2019-11-21 20:35 编辑
在 C / C++ 语言中,每个字符串末尾都必须有一个字符 '\0' 作为字符串的结束标志,这是操作系统的规定。
中文字符占几个字节取决于系统采用的汉字编码方案,在 Windows 系统下,汉字采用 GBK 编码,每个汉字字符占用 2 个字节,在 Linux 系统下,汉字采用 UTF-8 编码,每个汉字占用 3 个字节,这就意味着,同一个源代码编译出来的程序,在 Windows 下和 Linux 下得到的答案是不同的。
楼主展示的情况是在 Linux 系统下,每个汉字占用 3 个字节。
页:
[1]