面试知识点积累

(int&)n强制转化成一个int的引用,编辑器会把变量n对应的内容起始地址里的数据按照int变量的数据组织方式去解析。

float n=1.0f;
cout<<(int)n<<endl;
cout<<(int&)n<<endl;
cout<<boolalpha<<((int)n==(int&)n)<<endl;
输出结果:
1
1065353216
false
 
1.0f: 二进制:0011 1111 1000 0000 0000 0000 0000 0000=0x3f800000=1065353216

换成常引用就OK了,先进行类型转换,再引用

 
float a = 1.0f;

cout<<(int)a<<endl;
cout<<(int&)a<<endl;
cout<<boolalpha<<((int)a == (const int&)a)<<endl;

输出结果:
1
1065353216
true

浮点型和整型的在内存中的存储:
float 和 int 位的意义不同
float 共计32位,折合4字节
由最高到最低位分别是第31、30、29、……、0位
31位是符号位,1表示该数为负,0反之。
30-23位,一共8位是指数位。
22-0位,一共23位是尾数位

 

注:

boolalpha -- 把bool值显示为true或false


posted @ 2012-04-12 17:17  zhice163  阅读(598)  评论(0编辑  收藏  举报