首先我定义了一个联合体如下:
typedef union
{
int byteone;
struct
{
u8 structbit0:1;
u8 structbit1:1;
u8 structbit2:2;
u8 structbit3:1;
u8 structbit4:1;
u8 structbit5:1;
u8 structbit6:1;
}Struct_A;
}Test_bit;
然后赋值并打印
Test_bit TestData={0};
void app_test_union_task(void)
{
u8 i=0;
TestData.byteone=257;
USART3_printf("%d %d %d %d %d %d",TestData.Struct_A,TestData.byteone,i,sizeof(Test_bit),sizeof(TestData.byteone),sizeof(TestData.Struct_A));
}
结果是: 257 257 0 4 4 1
说明 TestData.Struct_A 是 u8 类型的它打印出来的值是 257 u8的最大值不是 255 吗???
请问各位大神 这是怎么回事,谢谢!!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
TestData.Struct_A 是 u8 类型的 他是结构体 里面是位操作 怎么回事 int 呢,他是和 int的类型在一个 联合体 里面!!!!!
一周热门 更多>