cout<<(int)i<<endl;
cout<<(int&)i<<endl;
输出什么?请请解释,
不是地址,是地址的话,每次分配空间后,空间地址有可能会变,而(int &)i输出的是一个定值。
float i = 1.0;
cout<<(int)i<<endl;//类型转换
cout<<(int&)i<<endl;//转化为整型的引用,引用就是取指针指向的值,本质还是指针,我想考的是看浮点数 1.0 的二进制形式直接作为整型输出的话会是多少吧,整型和浮点型的二进制表示形式不同,第一个方法 C ++会做类型转换的处理,这样浮点型的 1.0 变成整型后会是1,而后面一个会是一个莫明奇妙的数。
用这个程序可以看每个c++编译器里任何类型的内存单元的二进制值(从高地址到低地址显示)
#include <iostream>
using namespace std;
template <typename OStream,typename T1>
void GetBinary(OStream outs,T1 in)
{
T1 data = in;
unsigned char c = 1<<7,j = 0,k;
const unsigned char* p = (unsigned char*)&data+sizeof(data)-1;//转到高地址
for(int i = 0 ;i<sizeof(data);++i,--p)
{
c = 1<<7;
for(j = 0;j<8;j++)
{
k = *p & c;
k>>=(7-j);
c>>=1;
outs<<(unsigned int)k;
}
outs<<endl;
}
}
void main()
{
float i = -0.5f;
GetBinary(cout,i);
}