栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【番杰的问答笔记】c语言中汉字如何计数的问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【番杰的问答笔记】c语言中汉字如何计数的问题

1. 问题

今天学了一个统计字符数的代码

#include 

int main()
{
    int count = 0 ;

    printf("请输入英文字符:");

    while ( getchar() != 'n')
    {
        count = count + 1;//这个算式不是用来计数的吗?为什么中文会计对应两个字符?
    }

    printf("你总共输入了%d个字符", count);

    return 0;
}

本来我理解count = count + 1 这个表达式是用来统计字符数的。

但是我在试着输入中文的时候,程序统计中文是2个字符,结果如下:

请输入英文字符:你好
你总共输入了4个字符

所以,我想重新了解一下这个程序是怎么统计字符的?能否对代码的每一个作用部位有一个详细解释?

2. 回答

在计算机中存储中文使用的编码规则是GB2312或GB2312-80,规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,连在ASCII里本来就有的数字、标点、字母都通通重新编了两个字节长的编码,这就是常说的“全角”字符,而原来在127号以下的那些就叫“半角”字符。

就这么说吧,字母和英文输入法下的一些标点符号都可以用ascii码形式表示,占一个字符,
而汉字和中文下的标点符号就用到了其他的解码标准来实现,像GB2312之类的标准,还有其他的感兴趣自行百度。它是占两个字符的,这也是为啥你打代码的时候,英文的分号可以,而中文的分号不可以,他俩代表着不同的数值;

再说回你的这个问题,你输入“你好”,在计算机看来就相当于输入了四个字符:“xxyy ”(具体是啥我也不知道,xx合在一起表示“你”,yy合在一起表示“好”,这个具体的值根据使用到解码规则有关),所以在循环的时候就一共执行了4次count++;所以结果是4.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/699257.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号