#include<iostream.h>
struct animal
{
int wingspan;
int passengers;
union
{
float fuel_load;
float bomb_load;
int pallets;
};
}fighter,bomber,transport;
int main()
{
fighter.wingspan=40;
fighter.passengers=1;
fighter.fuel_load=12000.0; bomber.wingspan=90;
bomber.passengers=12;
bomber.bomb_load=14000.0; transport.wingspan=106;
transport.passengers=4;
transport.pallets=42; transport.fuel_load=18000.0;
fighter.pallets=4; cout<<"the fighter carries"<<fighter.pallets<<"pallets\n";
cout<<"the bomber bomb load is"<<bomber.bomb_load<<"\n";
cout<<fighter.fuel_load<<endl;
return 0;
}
我不太清楚为什么最后一个cout输出的是别的而不是12000.0
struct animal
{
int wingspan;
int passengers;
union
{
float fuel_load;
float bomb_load;
int pallets;
};
}fighter,bomber,transport;
int main()
{
fighter.wingspan=40;
fighter.passengers=1;
fighter.fuel_load=12000.0; bomber.wingspan=90;
bomber.passengers=12;
bomber.bomb_load=14000.0; transport.wingspan=106;
transport.passengers=4;
transport.pallets=42; transport.fuel_load=18000.0;
fighter.pallets=4; cout<<"the fighter carries"<<fighter.pallets<<"pallets\n";
cout<<"the bomber bomb load is"<<bomber.bomb_load<<"\n";
cout<<fighter.fuel_load<<endl;
return 0;
}
我不太清楚为什么最后一个cout输出的是别的而不是12000.0
union
{
float fuel_load;
float bomb_load;
int pallets;
};
这三个成员是共用一块空间的。你在
fighter.fuel_load=12000.0;
这一句之后又使用了
fighter.pallets=4;
这么一句,所以在你输出fighter.fuel_load的时候,系统将会用int(4)的二进制序列来当作float,自然就是你所说的“别的”,而不是你所希望的12000.0了。