首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言共用体,大家帮小弟我看看是咋回事

2012-09-03 
c语言共用体,大家帮我看看是怎么回事?#include stdio.hint main(){union type{int idouble fchar c}n

c语言共用体,大家帮我看看是怎么回事?
#include <stdio.h>
int main()
{
union type
{
int i;
double f;
char c;
}n;
n.i=2;
n.f=1.43;
n.c='a';
printf("%d\n",n.i);
return 0;
为什么n.i的时候,用%d输出输出一个-1374389663呢,而用%c就输出了a呢?还有为什么用%f输出n.f时候,输出的是1.43000呢,不是共用体赋值的时候以最终的那次赋值(n.c)为准吗?这样不是应该输出97.0000吗?谢谢了,帮我解决下吧。


[解决办法]
呵呵,因为那是double有8个字节,int 为4字节,char只有1个字节。而double是在协处理器中进行处理的。n.c='a'没有扰乱double在内存中的组织,或者说是只是覆盖了低端的部分,但是对整体的值没有多大的影响,只是影响了int的值了。
[解决办法]

探讨

呵呵,因为那是double有8个字节,int 为4字节,char只有1个字节。而double是在协处理器中进行处理的。n.c='a'没有扰乱double在内存中的组织,或者说是只是覆盖了低端的部分,但是对整体的值没有多大的影响,只是影响了int的值了。

热点排行