c - 解释C中的一行代码——指针和强制转换

标签 c pointers casting floating-point integer

我们有一些 float x,我们将它转​​换成 i,但是谁能解释一下首先 &,然后转换,最后 * 是做什么的?

int i = *(int*)&x;

最佳答案

&x

获取指向x

的指针
(int*)&x

将指针转换为 int*,即指向 int

的指针
*(int*)&x

取消引用结果指针,读取变量 x 的内存,就好像它是一个 int

如果不知道x 的类型,就很难判断代码的用途。最有可能的是,如果 x 是一个 float,它被用来获取 float 的二进制表示(这不可能仅通过强制转换来完成到 int,因为它执行 float 到 int 的转换)

关于c - 解释C中的一行代码——指针和强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26388043/

相关文章:

没有上限或下限的 C++ 舍入数

c++ - 如何编写混合 C 和 C++ 的 makefile

C语言和迷你板

子进程写入文件

swift - 在 Swift 中,你能写一个扩展,它返回扩展所在类的类型化实例吗?

java - 整数的通用 ArrayList 代替存储字符串?

c - C 中的 ncurses 打印的内容超出应有的内容并打印颜色代码

c - Ref/DeRef 双点链接列表

c++ - 在循环中将指针设置为 int 值

C++ 实例 VS 指针 VS 引用