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

时间:2019-09-29 00:32:39

标签: c floating-point binary

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

1 个答案:

答案 0 :(得分:7)

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

某人打算要做的是将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);