1.首先以下述代码为例:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;
int main()
{
float a = 1.0f;
cout << (int)a << endl; //将浮点型强制转换为整型1
cout << &a << endl; //取a的地址十六进制00A7FD68
cout << (int)&a << endl; //把a的地址强制转换成十进制的整型11009384
cout << (int&)a << endl; //将a的引用强制转化为整型
return 0;
}
输出结果如下:
"cout << (int&)a << endl;"输出的结果是1065353216, 而不是1。这是因为浮点数在内存里和整数的存储方式不同,(int&)a相当于将该浮点数地址开始的sizeof(int)个字节当成int型的数据输出,因此这取决于float型数据在内存中的存储方式,而不