#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位

Logo

一站式虚拟内容创作平台,激发创意,赋能创作,进入R空间,遇见同道,让优质作品闪耀发光。​

更多推荐