类型转换时这是什么意思 *(int*)&x?

what does this mean *(int*)&x when typecasting?

本文关键字:int 是什么 意思 类型转换      更新时间:2023-10-16

我正在寻找地震中使用的反转sqrt的示例代码。

我看到一个类型为float的变量:float x = 16;

然后CCD_ 3变量取该表达式的值:int i = *(int*)&a;

我对它的理解(从右到左)是,它获取变量a的地址,将其类型转换为整数指针,然后获取该指针的值并将其分配给i

当我在控制台中输出变量i时,它是一个大整数值。有人能详细解释一下这里发生了什么吗?

因为我期望变量CCD_ 8是CCD_。

&aa的地址,一个浮点;(int *)保持相同的地址,但现在告诉编译器假设int存储在那里;CCD_ 14然后从该地址加载CCD_。

所以你得到了一个整数,它的位模式和float相同。浮点和int有非常不同的编码,所以最终得到的值非常不同。

浮动可能是这样制定的,但它不是必需的;您的体系结构可能会做其他事情。作者可能正在做frexp的特定于平台的优化版本。

int i = (int)x;只需将float转换为int,就可以得到16