c++ - 将代码声明转化为文字(引用运算符和取消引用运算符混淆)

标签 c++ c pointers reference dereference

嗨,我是 c 和 c++ 的初学者,对这些代码行完全困惑,我不需要知道结果,只是想正确理解第二行,以下是代码

float f = 7.0;
short s = * (short * )&f;

最佳答案

据我所知,您将 float 的前 16 位重新解释为短整型。

会发生什么:首先获得 float 的地址,然后将该指针转换为 short* 指针,这样做后,您将在 a 处获取 16 位。时间而不是 32。最后查询指针的值。

由于 7.0 表示为 ( http://www.h-schmidt.net/FloatConverter/IEEE754.html ):

00000000 00000000 01110000 01000000

结果为 0,如果您进行第二次短路,则结果为 16 496

例如,如果您要使用:

float f = 7.0068;

那么结果将是:14 261

关于c++ - 将代码声明转化为文字(引用运算符和取消引用运算符混淆),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25417050/

相关文章:

c++ - GTK+ 如何处理指针?

c - 根据C中的定界符拆分字符串

c++ - Boost::python 静态方法返回类的实例

c++ - 比较 uint64_t 和 float 的数值等价性

C++ 引用复杂性让我很困惑

python - 从 Python 发出系统调用,获取输出文件名

c++ - 用 stringstream 解析 float - 精度?

c++ - 将 vector <Mat> 转换为 vector 文件 Opencv

c - 在 C 中使用结构并返回二维数组

比较 C 中的字符会引发错误