0

CompCert手册在 §6.5.2 中说明

如果在将值存储在对象的不同成员中之后访问联合对象的成员,则行为如上面最后一段所述:只要不需要访问存储的指针,该操作就被很好地定义了指针类型以外的类型或与指针类型大小相同的整数类型的值。例如,声明...

union u { double d; unsigned int i[2]; unsigned char c[8]; };

...支持在存储任何其他成员后访问任何成员。

所以我认为,在这个例子中,存储后的fprinting是定义的行为。但我仍然不知道这种行为实际上是什么。它会简单地保留 的字节表示,但尝试将其内容显示为' 类型吗?会吗?编译器会像除以零一样优化它吗?u.cu.du.du.cnull

4

0 回答 0