当前位置: 代码迷 >> C语言 >> 请教一个共用体问题!
  详细解决方案

请教一个共用体问题!

热度:81   发布时间:2007-10-30 18:43:15.0
请教一个共用体问题!

#include "stdio.h"
union data
{
int i[2];
float a;
long b;
char c[4];
};
int main()
{
union data d;
scanf("%d,%d",&d.i[0],&d.i[1]);
printf("i[0]=%x,i[1]=%d,a=%f,b=%ld\n",d.i[0],d.i[1],d.a,d.b);
printf("c[0]=%c,c[1]=%c,c[2]=%c,c[3]=%c\n",d.c[0],d.c[1],d.c[2],d.c[3]);
}
当输入10000,20000时,为什么a的值始终都是0啊?

搜索更多相关的解决方案: include  

----------------解决方案--------------------------------------------------------

整数和浮点数存储格式不一样.

你可以做实验将1个整形变量的值以 %f格式打印


----------------解决方案--------------------------------------------------------
回复:(camelbupt)请教一个共用体问题!
你只给整形数组赋值了.并没有给其它变量赋值.
----------------解决方案--------------------------------------------------------
格式转换问题。
学习。
----------------解决方案--------------------------------------------------------
你输入的事i[]的两个值,a得值当然不变了
----------------解决方案--------------------------------------------------------

看来还是有不少人不理解union这个东东啊,
一楼的是正解啊,整型和浮点型在内存中的存储格式不一样。


----------------解决方案--------------------------------------------------------
#include<iostream.h>

union date
{
int i[2];
float a;
long b;
char c[4];

};

main()
{
date d;
cout<<"请输入两个数:";
cin>>d.i[0]>>d.i[1];
cout<<d.i[0]<<','<<d.i[1]<<','<<d.a<<endl;
cin>>d.a;
cout<<d.i[0]<<','<<d.i[1]<<','<<d.a<<endl;
}

看了这个程序,你想想就明白了撒!!!!!!!



----------------解决方案--------------------------------------------------------
输入整数不好判断浮点数是几,
你可以输入浮点数,看输出整数的情况。
----------------解决方案--------------------------------------------------------
  相关解决方案