#include<stdio.h>
/*
* 用结构构造新类型,用位操作定义变量,把一个char拆解成两个4位操作
* 发现给变量a赋值一个大于16的数,并不会影响b的值
* a相当值做了截断操作,相当与一个大于16的数,对a进行了取余操作
*/
struct chtype
{
unsigned char a:4;
unsigned char b:4;
};
int main()
{
struct chtype x = {'\x0f','\x08'};
printf("%lu %u %u\n", sizeof(x),x.a, x.b);
for(int i = 0; i< 33; i++)
{
x.a = i;//给a赋值,大于16,直接高位舍弃,相当与&0xFF
printf("%u %u\n", x.a, x.b);
}
return 0;
}
位域,位操作
于 2022-08-23 17:43:39 首次发布