bool和char不可以,因为高位会自动填充不确定值
#include "stdio.h"
union FLOATUN{
unsigned int unui;
float unfl;
};
union DOUBLEUN{
unsigned long long int unul;
double undl;
};
int main(void)
{
int a = 0x12345678;
unsigned short int *p =(unsigned short int *) &a;
printf("%x\n", *(p));
printf("%x\n", *(p+1));
FLOATUN fun;
fun.unfl = 12.3456;
printf("float hex value:%x\n",fun.unui);
float b = 12.3456;
unsigned short int* c =(unsigned short int *) &b;
printf("%x\n", *(c));
printf("%x\n", *(c+1));
char d = 0x12;
unsigned short int *e =(unsigned short int *) &d;
printf("%x\n", *(e));
DOUBLEUN dun;
dun.undl = 12.3456;
printf("double hex value:0x%016I64x\n",dun.unul);
double f = 12.3456;
unsigned short int* g =(unsigned short int *) &f;
printf("%x\n", *(g));
printf("%x\n", *(g+1));
printf("%x\n", *(g+2));
printf("%x\n", *(g+3));
return 0;
}
5678
1234
float hex value:41458794
8794
4145
3812
double hex value:0x4028b0f27bb2fec5
fec5
7bb2
b0f2
4028