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

来源:互联网 发布:网络黄金为什么没上市 编辑:程序博客网 时间:2024/04/29 15:10
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 不是整数,就会按规则转换成整数,存入另一个地址(或临时变量)中去。

原创粉丝点击