Chinaunix首页 | 论坛 | 博客
  • 博客访问: 341556
  • 博文数量: 208
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 286
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-20 11:39
文章分类

全部博文(208)

文章存档

2014年(208)

我的朋友

分类: 嵌入式

2014-06-12 17:33:36


点击(此处)折叠或打开

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <conio.h>
  5.   
  6. using namespace std;
  7.   
  8. int main()
  9. {
  10.     float a = 1.0f;
  11.     cout << "(int)a:"<<(int)a <<endl;
  12.     cout << "&a:"<<&a <<endl;
  13.     cout << "(int &)a :"<< (int &)a <<endl;
  14.     cout << "(int) &a : "<<(int) &a <<endl;
  15.     cout << "( (int)a == (int&)a ):"<<boolalpha << ( (int)a == (int&)a );//输出什么?
  16.   
  17.     float b = 0.0f;
  18.     cout << "(int)b :"<<(int)b <<endl;
  19.     cout << "&b:"<<&b <<endl;
  20.     cout << "(int&)b:"<<(int&)b <<endl;
  21.     cout << "(int) &b: "<<(int) &b <<endl;
  22.     cout << " ( (int)b == (int&)b ):"<<boolalpha << ( (int)b == (int&)b );//输出什么?
  23.   
  24.     return 0;
  25. }

(int&)a == static_cast (a) 
(int)&a == reinterpret_cast (&a); 

&a取的是a的地址。

(int)&a是将a的地址转换成int。
(int&)a 不经过转换, 直接得到a在内存单元的值,并将其按照int存储方式取出,转换成整数输出。
(int)a a在内存中的值转换成int类型 

float类型在内存中存储的形式是 ,符号位 指数 尾数 
由754标准:阶码采用增码(该数补码的反符号),尾数采用原码 
所以1.0f 在内存中的形式为 
0011 1111 1000 0000 0000 0000 0000 0000 
所以输出的是 0x3f800000

0 在内存中的的存储形式 
0000 0000 0000 0000 0000 0000 0000 0000

所以输出的是0x00000000

 

所以前面一个是false,后面一个是true。


阅读(835) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~