getchar() != \n 和 while语句结合统计字符数,其中count = count + 1的作用?

今天学了一个统计字符数的代码(使用的编译器是code blocks 20.03):

#include <stdio.h>
 
int main()
{
    int count = 0 ;
 
    printf("请输入英文字符:");
 
    while ( getchar() != '\n')
    {
        count = count + 1;//这个算式不是用来计数的吗?为什么中文会计对应两个字符?
    }
 
    printf("你总共输入了%d个字符", count);
 
    return 0;
}

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

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

img

img

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

按结果推导,输入一个中文的时候是计了两次数,这为什么?为什么程序会计两次输入?

while ( getchar() != '\n')
getchar获取键盘输入,只要不是回车就进入循环给count加一
中文一个字占用两个字节,英文字母一个占用一个字节,所以中文计数是两倍

一个中文占两个字节,getchar()一次只读取一个字节

一个中文占两个字符的位置