union{
int i;
char c;
float f;
} u;
u.i=97;
printf("%c",u.c);
printf("%f",u.f);
初学者,请问各位第一个输出能输出字符a,为什么第二个输出是0.00000
union{
int i;
char c;
float f;
} u;
u.i=97;
printf("%c",u.c);
printf("%f",u.f);
初学者,请问各位第一个输出能输出字符a,为什么第二个输出是0.00000
收起
union的长度取决于最长的float,那么这个u占据4个字节。那么他们对齐之后,如果按照u.i=97来存储,那么第一个字节就是97,取成c的话,就是字符‘a’,取成f的话,那么按照float在内存中的表示,前9位表示符号和指数,后面是尾数,本例中符号和指数计算出来的值很小,无法显示而已就成了0.00000。
那如果输入32767呢,会有显示么
报告相同问题?