例如,假设我们有一个联盟
typedef union {
unsigned long U32;
float f;
}U_U32_F;
当声明了这个union类型的变量时,有没有办法设置初始值?
U_U32_F u = 0xffffffff; // Does not work...is there a correct syntax for this?
答案 0 :(得分:32)
使用初始化列表:
U_U32_F u = { 0xffffffff };
您可以通过
设置除第一个之外的其他成员U_U32_F u = { .f = 42.0 };
答案 1 :(得分:3)
尝试U_U32_F u = {0xffffffff};
答案 2 :(得分:3)
请注意,每个成员联合初始化对于C99之前的编译器不起作用,其中有一个令人沮丧的数字。例如,当前的Microsoft C编译器不支持它。 (我隐约回想起它甚至不支持第一成员初始化,这可以追溯到K& R II,但我可能错了。)