gpt4 book ai didi

你能解释打印 union 成员的结果吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:14:01 24 4
gpt4 key购买 nike

谁能告诉我为什么 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;
}

以上代码编译执行后,结果如下:

data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

最佳答案

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

如果你希望能够为多个数据成员存储值,你需要使用一个struct

关于你能解释打印 union 成员的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com