鱼C论坛

 找回密码
 立即注册
查看: 1125|回复: 1

[已解决]中文字符所占的字节数

[复制链接]
发表于 2019-11-21 20:14:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼在作业中演示了中文字符所占的字节数,代码如下:
#include <stdio.h>

int main()
{
        char str[] = "中";
        int length, i;

        length = sizeof(str) / sizeof(str[0]);

        printf("length of str: %d\n", length);

        for (i = 0; i < length; i++)
        {
                printf("str[%d] = %d\n", i, str[i]);
        }

        return 0;
}
小甲鱼给出的结果是:

                               
登录/注册后可看大图

既然给出的长度是4,为什么说中文字符占3个字节?最后那个0为什么不算?这个0的意义是什么?
当然,我已验证这是对的,我自己的系统中给出的长度是3,占2字节。只是想不通这个0是什么,以及为什么是这样的。
最佳答案
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 个字节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 个字节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-4 23:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表