利用联合Union访问不同数据类型的位模式(类型转换)

  Union的大小等于它最大字段的大小,内存中union所有字段共用整个内存。

  C风格的数值型强制转换是将一个类型的数值转化为符合另一个类型的数值,当两个类型的精度不同时,可能发生精度损失(近似值),并且位模式可能发生改变。

float d;
unsigned long u=(unsigned long) d;               //u为d的近似值,位模式改变(除了值为0.0的情况)

  利用union可以在不改变位模式的情况下改变类型。

union example{
double d;
unsigned long u;
};
double d;
example.d=d;
unsigned long u=example.u;      //则u和d的位模式一样

 

posted @ 2021-09-13 22:44  放不下的小女孩  阅读(336)  评论(0)    收藏  举报