我正在尝试以下代码:
typedef union Data
{
int i;
}data;
int main( )
{
data d1;
d1.i = 10; // OK
data d3 = {7};// OK
data d2.i = 20; // Gives error
}
我的问题是为什么data d2.i = 20
会出现错误,而其他的却可以正常工作?
d2
,而在前面的初始化行中,变量d1
已经被声明了。行d1 = {7}
使用了一种特定的定义方式(初始化器列表),其中{}
表示“按照指定顺序将这些成员放入”,而最后一行中没有这样的表达式,因此您试图声明一个名为d2.i
的数据类型变量,并为整个对象赋值 20。 - Toby