陷阱表示
问题:
答案:
1。陷阱表示:
在 C 中,陷阱表示是一种位模式,适合类型的大小,但如果用作该类型的值,则会导致未定义的行为。任何类型都不需要具有陷阱表示,但唯一保证不具有陷阱表示的类型是 unsigned char。
陷阱表示的一个示例是浮点类型中的信号 NaN。这些模式在 C99 中未定义。
2。对 C 的适用性:
虽然问题没有提到 C ,但值得注意的是陷阱表示的概念也适用于 C。
3.浮点和指针的二进制表示:
下面提供的代码表现出未定义的行为:
float f = 3.5; int *pi = (int*)&f;
但是,此行为与陷阱表示无关。要获取与浮点数具有相同位模式的整数值,请使用以下代码:
int extract_int(float f) { union { int i; float f; } u; u.f = f; return u.i; }
此代码在 C99 中表现出未指定的行为,这意味着标准没有定义生成的确切整数值,但它保证获得有效的整数值。因此,浮点数的二进制表示形式和使用联合获得的整数不能保证相同。
以上是C 和 C 中的陷阱表示形式是什么,相同大小的浮点数及其指针是否共享相同的二进制表示形式?的详细内容。更多信息请关注PHP中文网其他相关文章!