zhuwei9999 发表于 2019-11-21 20:14:46

中文字符所占的字节数

小甲鱼在作业中演示了中文字符所占的字节数,代码如下:
#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:29:59

本帖最后由 jackz007 于 2019-11-21 20:35 编辑

   在 C / C++ 语言中,每个字符串末尾都必须有一个字符 '\0' 作为字符串的结束标志,这是操作系统的规定。
   中文字符占几个字节取决于系统采用的汉字编码方案,在 Windows 系统下,汉字采用 GBK 编码,每个汉字字符占用 2 个字节,在 Linux 系统下,汉字采用 UTF-8 编码,每个汉字占用 3 个字节,这就意味着,同一个源代码编译出来的程序,在 Windows 下和 Linux 下得到的答案是不同的。
      楼主展示的情况是在 Linux 系统下,每个汉字占用 3 个字节。
页: [1]
查看完整版本: 中文字符所占的字节数