立即学习:https://edu.csdn.net/course/play/10534/378145?utm_source=blogtoedu
#include <stdio.h>
// 定义简单的结构
typedef struct {
char mon;
char tue;
char wed;
char thur;
char fri;
} StudAbsent1;
// 定义位域结构
typedef struct {
unsigned char mon : 1;
unsigned char tue : 1;
unsigned char wed : 1;
unsigned char thur : 1;
unsigned char fri : 1;
} StudAbsent2;
// 存储大小
typedef struct {
unsigned int age : 3;
} Student;
void normal_struct() {
StudAbsent1 absent1 = {0};
absent1.mon = 1;
absent1.thur = 1;
printf("size = %lu\n", sizeof(StudAbsent1));
printf("absent1.mon = %d, absent1.tue = %d, absent1.thur = %d\n",
absent1.mon, absent1.tue, absent1.thur);
}
void bit_struct() {
StudAbsent2 absent2 = {0};
absent2.mon = 1;
absent2.thur = 1;
printf("size = %lu\n", sizeof(StudAbsent2));
printf("absent1.mon = %d, absent1.tue = %d, absent1.thur = %d\n",
absent2.mon, absent2.tue, absent2.thur);
}
void bit_age() {
Student stud = {0};
// 111
stud.age = 7;
printf("stud.age = %d\n", stud.age);
// 1000
stud.age = 8;
printf("stud.age = %d\n", stud.age);
}
void combination() {
// 组合使用
typedef struct {
char name[32];
unsigned age : 3;
unsigned sex : 1;
char class[32];
} Student;
Student stud1 = {.name = "zhangsan", .age = 6, .sex = 0, .class = "二班"};
Student stud2 = {.name = "lisi", .age = 5, .sex = 1, .class = "二班"};
printf("stud1.name = %s, stud1.age = %u, stud1.sex = %u, stud1.class = %s\n",
stud1.name, stud1.age, stud1.sex, stud1.class);
printf("stud2.name = %s, stud2.age = %u, stud2.sex = %u, stud2.class = %s\n",
stud2.name, stud2.age, stud2.sex, stud2.class);
}
int main() {
normal_struct();
printf("----------------------------\n");
bit_struct();
printf("----------------------------\n");
bit_age();
printf("----------------------------\n");
combination();
return 0;
}