我正在阅读一段代码。我相信这是在 C++ 中:
union Float_t
{
Float_t(float num = 0.0f) : f(num) {}
// Portable extraction of components.
bool Negative() const { return (i >> 31) != 0; }
int32_t RawMantissa() const { return i & ((1 << 23) - 1); }
int32_t RawExponent() const { return (i >> 23) & 0xFF; }
int32_t i;
float f;
#ifdef _DEBUG
struct
{ // Bitfields for exploration. Do not use in production code.
uint32_t mantissa : 23;
uint32_t exponent : 8;
uint32_t sign : 1;
} parts;
#endif
};
有人可以解释两件事吗?
1..
Float_t(float num = 0.0f) : f(num) {}
这条线在说什么?当 f 没有定义时, f(num) 是什么意思?
2.为什么后半段代码需要#ifdef _DEBUG和#endif?
谢谢。