29

例如,假设我们有一个工会

typedef union {
unsigned long U32;
float f;
}U_U32_F;

当声明这个联合类型的变量时,有没有办法设置一个初始值?

U_U32_F u = 0xffffffff;   // Does not work...is there a correct syntax for this?
4

3 回答 3

39

使用初始化列表:

U_U32_F u = { 0xffffffff };

您可以通过以下方式设置第一个成员以外的其他成员

U_U32_F u = { .f = 42.0 };
于 2010-01-27T17:33:57.773 回答
4

请注意,每个成员联合初始化在 C99 之前的编译器上不起作用,其中有一个令人沮丧的数字。例如,当前的 Microsoft C 编译器不支持它。(我隐约记得它甚至不支持第一成员初始化,这可以追溯到 K&R II,但我可能错了。)

于 2010-01-27T20:39:50.063 回答
3

尝试U_U32_F u = {0xffffffff};

于 2010-01-27T17:34:57.727 回答