(int&)a和(int)a的区别
2009-11-06 15:18
323 查看
#include <iostream> #include <string> #include <cstdlib> using namespace std; int main() { float a = 1.0f; cout << (int)a << endl; cout << (int&)a << endl; cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么? float b = 0.0f; cout << (int)b << endl; cout << (int&)b << endl; cout << boolalpha << ( (int)b == (int&)b ) << endl; // 输出什么? }
(int&)a == static_cast <int&>(a)
(int)&a == reinterpret_cast <int>(&a);
(int&)a 不经过转换, 直接得到a在内存单元的值,并将其转换成整数输出。
(int)a a在内存中的值转换成int类型
float类型在内存中存储的形式是 ,符号位(1位) 指数(8位) 尾数(23位)
尾数采用原码(原码+127)
所以1.0f 在内存中的形式为
0011 1111 1000 0000 0000 0000 0000 0000
所以输出的是 0x3f800000
0 在内存中的的存储形式
0000 0000 0000 0000 0000 0000 0000 0000
所以输出的是0x00000000
所以前面一个是false,后面一个是true。
详细的float和double的存储表示:http://blog.csdn.net/zjumath/archive/2009/05/12/4174270.aspx
相关文章推荐
- int *pa(指针)和int *&pa(指针的引用)的区别
- int *pa(指针)和int *&pa(指针的引用)的区别
- int *ptrl=(int*)(&a+1); int *ptr=(int*)((int)a+1) 这两个定义有什么区别
- 有关(int&)和(int)的区别
- (int)a、&a、(int)&a、(int&)a的区别,很偏僻的题
- (int&)a和(int)a的区别
- C++中int、int&、int*和int**的区别与联系、用途
- 有关(int&)和(int)的区别
- (int)a、&a、(int)&a、(int&)a的区别,很偏僻的题
- int const* func(const int&) | const int* func(const int&) | int *func() const区别
- Mysql数据库int(1)和tinyint(1)的区别&&扩展阅读
- (int) &、(int)、(int &)的区别
- int *pa(指针)和int *&pa(指针的引用)的区别
- int *pa(指针)和int *&pa(指针的引用)的区别
- int的一点事,读《深入C#内存管理来分析值类型&引用类型,装箱&拆箱,堆栈几个概念组合之间的区别》
- (int&)a和(int)a的区别
- (int&)和(int)的区别
- C++中(int&)和(int)的区别
- int *&p与int *P的区别
- (int&)a和(int)a的区别