【发布时间】:2021-07-26 06:00:23
【问题描述】:
以下是代码:
int a = 1;
int* ptr = &a;
float* p1 = (float*)ptr // or reinterpret_cast<float*>(ptr);
cout << *p1 << endl;
当我尝试打印浮点指针 p1 指向的值时,我得到的答案是:1.4013e-45。 谁能解释一下为什么会这样?
【问题讨论】:
-
您期望什么价值,为什么?
-
我希望得到“1”作为输出。
-
迂腐的答案是这是未定义的行为。在纸面上,实际上任何事情都可能发生,而你无法控制。
-
IEEE-754 Floating Point Converter 0x00000001 代表 1.40129846432e-45
-
float f = a;如果您希望将值分配给浮点数。 float 的位与 int 的位完全不同。
标签: c++ casting reinterpret-cast