Chinaunix首页 | 论坛 | 博客
  • 博客访问: 365431
  • 博文数量: 242
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1134
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-20 10:53
文章分类

全部博文(242)

文章存档

2015年(1)

2014年(10)

2013年(18)

2012年(213)

分类:

2012-10-30 14:06:07

C++代码
  1. #include  
  2. using namespace std;  
  3. void main()  
  4. {  
  5. float a = 1.0f;  
  6. cout << &a << endl;  
  7. cout << (int)&a << endl;  
  8. cout << (int&)a << endl;  
  9. cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?  
  10. float b = 0.0f;  
  11. cout << (int)b << endl;  
  12. cout << (int&)b << endl;  
  13. cout << boolalpha << ( (int)b == (int&)b ) << endl; // 输出什么?  


输出结果是

1                      // a转换为整形
1310588          // a的地址转换为整形
1065353216    // a转化为整形引用
false
0                      // b转换为整形
1310584          // b的地址转换为整形
0                      // b转化为整形引用
true

(int)&a 把a的地址强制转换成整型,(int&)a 把a强制转换成整形引用类型,相当于是某个整形引用,引向了a所在的32位内存区域,并将这32位当做一个整数。

对于浮点数1.0,根据IEEE754的浮点数存储格式表示为3f800000(0011 1111 1000 0000 0000 0000 0000 0000),(int)&a把3f800000当做int型输出,所以结果为1065353216。0 在内存中的的存储形式
0000 0000 0000 0000 0000 0000 0000 0000,当做int型输出后,结果依然为0。
阅读(477) | 评论(0) | 转发(0) |
0

上一篇:在QT中播放声音

下一篇:另一个sizeof程序

给主人留下些什么吧!~~