谁能告诉我,为什么data.i和data.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编程
你误解了一个人的目的union.A union用作可以存储多种类型值的单个变量.但是union只为最大数据成员的类型分配足够的空间.因此,您一次只能使用一个数据成员.一旦设置了一个成员的值,它就会使其他成员无效.
如果您希望能够存储多个数据成员的值,则需要使用a struct