#include <stdio.h>
union FLOATUN{
unsigned int a;
float b;
};
int main(){
FLOATUN fun;
fun.b = 12.34;
printf("c:%x\n",fun.a);
double a = 12.34;
fun.b = (float) a;
printf("c:%x\n",fun.a);
double c = 12.34;
float *p;
p = (float *) &c;
printf("float c:%f\n",*p);
}
输出结果
c:414570a4
c:414570a4
float c:584860314976236483507101602781593600.000000
只要不超出范围,double可以强转float
但用float指针会出错,因为float指针相当于只取了64位变量的32位