繁体   English   中英

指向浮点指针的 int 指针 - reinterpret_cast

[英]int pointer to float pointer - reinterpret_cast

以下是代码:

int a = 1;
int* ptr = &a;
float* p1 = (float*)ptr // or reinterpret_cast<float*>(ptr);
cout << *p1 << endl;

当我尝试打印浮点指针 p1 指向的值时,我得到的答案是:1.4013e-45。 谁能解释为什么会这样?

谁能解释为什么会这样?

您通过与指向的 object 的类型不兼容的指针访问 object,因此程序的行为未定义。

我希望得到“1”作为 output。

要获得浮点数 1,您可以将 static_cast int 转换为浮点数,或者简单地让转换为隐式:

float f = a;
std::cout << f;

在浮点或双精度表示中使用的 Integer 值是非正规的,并根据IEEE 754 标准进行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM