这个中文之间的比较是什么原理

想问一下这个比较的原理是什么?为什么可以这样?


#include<stdio.h>
#include<string.h>
int main()
{
    void bubble_sort(char* name[], int n);//函数声明,下同
    void print(char* name[], int n);
    char* dept[] = { "管理系","国际经贸系","财会系","计算机系","电子系","数码媒体系","外语系","软件工程系","网络技术系","游戏系","基础部","思政部" };
    bubble_sort(dept, 11);
    print(dept, 12);
}
void bubble_sort(char* name[], int n) {
    int i, j;
    char* t;
    for (j = 0; j < n; j++)
        for (i = 0; i < n - j; i++)
            if (strcmp(name[i], name[i + 1]) > 0)
            {
                t = name[i]; name[i] = name[i + 1]; name[i + 1] = t;
            }
}

void print(char* name[], int n) {
    int i;
    for (i = 0; i < n; i++) printf("%s\n", name[i]);
}

如果中文汉字按UTF-8编码存储,比如的UTF-8编码是0xE7 0xAE 0xA1的UTF-8编码是0xE5 0x9B 0xBDstrcmp()函数是按一个一个字节来比较,这样排在前面