c - *((int*)&f) 在 C 中做什么?

标签 c floating-point binary

我通过这个答案找到了一种在 c 中将 float 转换为二进制数的方法:Convert float to binary in C ,但我不确定答案 *((int*)&f) 中使用的代码实际上是如何转换数字的。它具体是做什么的?

最佳答案

它会调用未定义的行为,这意味着您的程序如果可以访问则无效。

有人打算让它做的是将 float 的位重新解释为 int,假设 int 是 32 位的,float 可能也是 IEEE 单数。

有两种正确的方法可以做到这一点(int 替换为 uint32_t 以删除第一个无用的假设):

  1. (union { float f; uint32_t i; }){f}.i
  2. uint32_t i; memcpy(&i,&f,sizeof i);

关于c - *((int*)&f) 在 C 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151284/

相关文章:

c - 线程1收到信号SIGSEGV,段错误

c - 这个C函数是什么意思?

java - int 可以增加一个 double 值

sql - 使用 t-sql 计算二进制类型的真位计数

通过二进制格式化程序进行列表序列化和反序列化

C:如何将不同大小的文本文件的每一行存储到 int 数组中?

c - 在 Arduino 上经过一定时间后执行事情

matlab - 数字在 Matlab 中的二进制表示

c++ - 将 float 舍入为 n 位有效数字的 C 例程?

java - 将 int 写入二进制缓冲区(Android)并使用 C++ 读取