【发布时间】:2020-01-31 01:41:06
【问题描述】:
我在使用带有联合元素的 scanf 作为参数时遇到问题,上级联合是嵌套结构的一部分。
#include <stdio.h>
int main()
{
typedef union { float chair; int bed; } HABITATION;
typedef struct { HABITATION room; int number; } HOUSE;
scanf("%d",&HOUSE.room.bed);
}
编译器的错误信息是: “错误:在 ) >>ROOF
我做错了什么?
信息: 我目前使用 C,但我也对 C++ 中的相同操作和答案感兴趣。
【问题讨论】:
-
原因在两种语言中都是一样的,也是一样的,为什么
scanf("%d",&int);无效。 -
代码中
ROOF在哪里? -
C++ 代码看起来可能完全不同,并对
unions 应用不同的规则。两者之间的比较本身就是一个很好的问题,在这里不应该是一个侧边栏。 -
请注意,
HOUSE不是一个变量,它是一个类型,所以你不能将它的任何成员传递给scanf。 -
@WeatherVane 是的,这就是问题所在。我混淆了它是一个变量,并不介意它仍然是一个数据类型。非常感谢。