c++ - 这是什么意思? (int &)a

标签 c++

定义一个float变量a,将a转换为float&和int&,什么意思?转换后,a 是对自身的引用?为什么两者的结果不同?

#include <iostream>
using namespace std;
int
main(void)
{
    float a = 1.0;
    cout << (float &)a <<endl;
    cout << (int &)a << endl;

    return 0;
}


thinkpad ~ # ./a.out 
1
1065353216

最佳答案

cout << (float &)a <<endl;
cout << (int &)a << endl;

第一个将 a 中的位视为 float 。第二个将 a 中的位视为 int。 float 1.0 的位恰好是整数 1065353216 的位。

它基本上等同于:

float a = 1.0;
int* b = (int*) &a;
cout << a << endl;
cout << *b << endl;

(int &) a 将 a 转换为对整数的引用。换句话说,是对 a 的整数引用。 (正如我所说,将 a 的内容视为整数。)

编辑:我现在正在四处看看这是否有效。我怀疑不是。这取决于小于或等于实际大小的类型。

关于c++ - 这是什么意思? (int &)a,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529500/

相关文章:

C#项目没有为自己写的c++ dll定义入口点

c++ - OpenCV 3.0 中缺少 cv::Mat.refcount

c++ - 基类中的 typedef 是否在没有完全限定的情况下在继承类中可见?

c++ - 真彩色CImageList

c++ - 将第一个元素移动到 forward_list 的末尾

c++ - 生成二维非退化点集 - C++

c++ - 从 png、winapi 创建透明图像

c++ - 将外部库包含到 Qt

c++ - 如何从基于 C++ 的 COM 对象写入 VB6 即时窗口?

c++ - 鉴于某些函数是常量而其他函数是非常量,正确使用/修改 QString