C语言有关结构体初始化的问题


#include
int main()
{
    struct Student
    {
        long int number;
        int C_score, M_score, E_score, A_score;
        char name;
    }std1, std2;
    std1.number = 20222015001;
    std1.name = "xiaoming";
    std1.C_score = 90;
    std1.M_score = 94;
    std1.E_score = 92;
    std2.number = 20222015002;
    std2.name = "xiaolan";
    std2.C_score = 95;
    std2.M_score = 95;
    std2.E_score = 92;
    printf("%ld", std1.number);
    return 0;
}

为什么20222015001存不进去,怎么办

溢出了,超出 long int 的取值范围了。
还有,name 应该要定义成数组,然后用 strcpy 函数来初始化赋值,不能用等号。