gpt4 book ai didi

c - 定义结构体以使两个成员具有相同的值

转载 作者:行者123 更新时间:2023-11-30 15:04:48 25 4
gpt4 key购买 nike

当我在 main 函数中给 gpr[0].a 一个数字时,如何组织 jo 结构体以使成员 c 获取 gpr[0].a 的值。看来我不能使用“=”使它们在结构定义中保持相同的值。不改变main函数,只需重新组织struct jo,得到结果ou.c =1, ou.d =2

#include <stdio.h>
#include <stdlib.h>

typedef struct {
union {
double a;
int b;
} gpr[2];
double c, d;
} jo;

int main (int argc, char *argv[])
{
jo ou;

ou.gpr[0].a = 1;
ou.gpr[1].a = 2;

printf("%f\n", ou.c);
printf("%f\n", ou.d);

return 0;
}

任何帮助将不胜感激

最佳答案

这样做是为了测试您对 union 的了解。因此,目前您在长度为 2 的数组中拥有 ab 的并集。现在我们需要 gpr[0]c 相同,gpr[1]d.

因此,数组的每个成员的长度都是sizeof(double),并且有两个成员。因此,我们需要一个包含 2 个 double (cd)的结构来与 gpr[2] 变量 union 。

因此这应该有效:

typedef struct {
union {
struct {
double c;
double d;
};
union {
double a;
int b;
} gpr[2];
};
} jo;

我们必须使用匿名结构和 union ,或者必须更改代码才能引用成员。

关于c - 定义结构体以使两个成员具有相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40144398/

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