您的位置:首页 > 其它

(int)a和(int &)a区别

2013-05-06 22:03 239 查看
float a = 1.0f;
cout < < (int)a < < endl;   //1
cout < < (int&)a < < endl;  //1065353216

浮点数的 1.0f
在内存里是这样表示的:

0011 1111 1000 0000 00000000 00000000

(int&)a:将a的引用强制转换为整型,意思是a所在的内存,本来定义的时候为float类型,并初始为1.0f,
但现在我要按int类型

解释这段内存(也就是说a所在的内存地址中的数据本来是按float型存储表示的,你非要按int型来解释不可)。

1.0f
在内存中的存储为0011 1111 1000 0000 00000000 00000000

把他按整型数解释为2^29+2^28+2^27+2^26+2^25+2^24+2^23=1065353216

(int&)a 相当于*(int*)&a ; *(int*)(&a) ; *((int*)&a)

(int)a
呢不同:如果 a 不是整数,就会按规则转换成整数,存入另一个地址(或临时变量)中去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: