类型转换时这是什么意思 *(int*)&x?
what does this mean *(int*)&x when typecasting?
我正在寻找地震中使用的反转sqrt
的示例代码。
我看到一个类型为float的变量:float x = 16;
然后CCD_ 3变量取该表达式的值:int i = *(int*)&a;
我对它的理解(从右到左)是,它获取变量a
的地址,将其类型转换为整数指针,然后获取该指针的值并将其分配给i
。
当我在控制台中输出变量i
时,它是一个大整数值。有人能详细解释一下这里发生了什么吗?
因为我期望变量CCD_ 8是CCD_。
&a
取a
的地址,一个浮点;(int *)
保持相同的地址,但现在告诉编译器假设int
存储在那里;CCD_ 14然后从该地址加载CCD_。
所以你得到了一个整数,它的位模式和float相同。浮点和int有非常不同的编码,所以最终得到的值非常不同。
浮动可能是这样制定的,但它不是必需的;您的体系结构可能会做其他事情。作者可能正在做frexp
的特定于平台的优化版本。
int i = (int)x;
只需将float转换为int,就可以得到16
。
相关文章:
- "类模板示例<int>;"语句对 C++11 是什么意思?
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- map<string, int> m= {}; 在C++中是什么意思?
- 行 - " vector<int> used(adj.size(), 0); "是什么意思?
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 代码中的"vector<<int>vector>&index"是什么意思?
- 在这种情况下,int**在C中是什么意思
- "1L << count"是什么意思?如何使用超出"unsigned long long int? "范围的语句编号打印?
- "int(i)=1;"是什么意思?
- freq_table[field_pm_value] = map<string, int>(); 是什么意思?
- 统一初始化是隐式发生的,即使 int 强制转换运算符是使用 explicit 关键字声明的.原因是什么?
- map<int,int>的*迭代器是什么?它不是pair<int,int>
- 在C#中等效于未签名的长Int是什么
- "cannot Convert vector<int>* to int"是什么意思?
- <T::* int>是什么意思?
- C++中的新Bytef[int]是什么
- *new int是什么意思?
- A<int(int)>是什么意思?这项技术叫什么名字?