当前位置:   article > 正文

(int&) 与int(&)_&int(&)

&int(&)
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. float a = 1.0f;
  6. cout << sizeof(int) <cout << sizeof(float) <
  7. cout << (int)a << endl;//1
  8. cout << &a << endl; /*取a的地址十六进制0012FF7C*/
  9. cout << (int)&a << endl;/*(int)&a:把a的地址强制转换成十进制的整型1065353216*/
  10. cout << (int&)a << endl;
  11. /*实际上,(int&a)是与*((int*)&a)等价的,意思都是将&a这个地址上的32位看成int型,即使存储在这里的可能不是int型数据(int&)a为什么会是1065353216呢?
  12. 这和浮点数在内存中的存储格式有关,float 1.0在内存中存储为(按IEEE754规定):
  13. 符号位 阶(8位) 尾数(23位)
  14. 0 01111111 000 0000000000 0000000000
  15. 于是将其看做int型数值的话
  16. 00111111100000000000000000000000(2) = 1065353216(10)
  17. 把他按整型数解释为2^29+2^28+2^27+2^26+2^25+2^24+2^23=1065353216
  18. (int&)a 相当于
  19. *(int*)&a
  20. *(int*)(&a)
  21. *((int*)&a)
  22. */
  23. cout << boolalpha << ((int)a =
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/程序代码艺术家/article/detail/63127
推荐阅读
相关标签
  

闽ICP备14008679号