union中输出数值 浮点数在内存的储存与整数的区别

C语言 码拜 6年前 (2015-05-12) 510次浏览 0个评论
#include<stdio.h>
union
{
	int a;
	char c;
	float f;
}a;
int main()
{
	a={65};
	printf("a=%d,c=%c;f=%f",a.a,a.c,a.f);
	return 0;
}

为什么对a赋值65,f输出是0.0,c输出确实A;
不太懂它在内存中的分配怎么影响结果的!

10分
浮点数在内存的储存与整数是有区别的,你搜索一下浮点数 内存储存就知道了。
10分
浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加指数占8位 — float.

求解 a={65};

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明union中输出数值 浮点数在内存的储存与整数的区别
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!