我通过这个答案找到了一种在 c 中将 float 转换为二进制数的方法:Convert float to binary in C ,但我不确定答案 *((int*)&f)
中使用的代码实际上是如何转换数字的。它具体是做什么的?
最佳答案
它会调用未定义的行为,这意味着您的程序如果可以访问则无效。
有人打算让它做的是将 float
的位重新解释为 int
,假设 int
是 32 位的,float
可能也是 IEEE 单数。
有两种正确的方法可以做到这一点(int
替换为 uint32_t
以删除第一个无用的假设):
(union { float f; uint32_t i; }){f}.i
uint32_t i; memcpy(&i,&f,sizeof i);
关于c - *((int*)&f) 在 C 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151284/