你能解释印刷工会成员的结果吗?

Ano*_*ser 0 c

谁能告诉我,为什么data.idata.f被损坏?这段代码来自的网站试图解释它,但使用了错误的语法和许多错别字,所以我想知道这里是否有人可以帮助我.

#include <stdio.h>
#include <string.h>

union Data
{
   int i;
   float f;
   char  str[20];
};

int main( )
{
   union Data data;        

   data.i = 10;
   data.f = 220.5;
   strcpy( data.str, "C Programming");

   printf( "data.i : %d\n", data.i);
   printf( "data.f : %f\n", data.f);
   printf( "data.str : %s\n", data.str);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译并执行上述代码时,会产生以下结果:

data.i:1917853763
data.f:4122360580327794860452759994368.000000
data.str:C编程

Cha*_*via 5

你误解了一个人的目的union.A union用作可以存储多种类型值的单个变量.但是union只为最大数据成员的类型分配足够的空间.因此,您一次只能使用一个数据成员.一旦设置了一个成员的值,它就会使其他成员无效.

如果您希望能够存储多个数据成员的值,则需要使用a struct