(int) &、(int)、(int &)的区别
2015-03-17 13:32
323 查看
(int)&, (int), (int &)的区别我们可以首先通过运行以下的程序来分析:
int main(){
float a=1.0f;
printf("(int)&a=%d\n",(int) &a);
printf("(int&)a=%d\n",(int&)a);
printf("(int)a=%d\n",(int)a);
system("pause");
return 0;
}
运行结果如下:
(int)&a=3079672
(int&)a=1065353216
(int)a=1
对于(int) &a,我们都熟悉,就是取a所在地址转为Int型, 那么(int &)a和(int) a又代表什么呢?
先从最简单的说起,(int)a是将a中的值强制转换为int型, 也就是说只取a的整数部分,而去除小数部分。
而(int &)a不同,它的意思是,不管原来的存储方式,一律按照int类型的存储方式输出。说的这一点,我们就要补充一些知识点了:
1 二进制表示小数
小数1.5如何用二进制表示呢?首先将它的整数部分用二进制表示,小数部分采用乘以2的方式,依次取得乘以2之后的整数部分,直到小数部分为0或者无限小数为止(这也是为什么浮点数不是精确的),于是1.5用二进制表示就是1.1
2 浮点数存储
浮点数的存储采用的是科学计数法:1位符号位,8位阶码,23位尾数,共32位。
就1.0f,采用二进制表示是1.0, 符号位是0(正数), 小数点不需要移动(小数点移动至第一位和第二位之间,右移为负数),于是阶码表示为127+0=127 尾数为0
于是表示成: 0 0111 1111 00000000 0000000000 0000000
若采用Int类型来读就是1065353216
int main(){
float a=1.0f;
printf("(int)&a=%d\n",(int) &a);
printf("(int&)a=%d\n",(int&)a);
printf("(int)a=%d\n",(int)a);
system("pause");
return 0;
}
运行结果如下:
(int)&a=3079672
(int&)a=1065353216
(int)a=1
对于(int) &a,我们都熟悉,就是取a所在地址转为Int型, 那么(int &)a和(int) a又代表什么呢?
先从最简单的说起,(int)a是将a中的值强制转换为int型, 也就是说只取a的整数部分,而去除小数部分。
而(int &)a不同,它的意思是,不管原来的存储方式,一律按照int类型的存储方式输出。说的这一点,我们就要补充一些知识点了:
1 二进制表示小数
小数1.5如何用二进制表示呢?首先将它的整数部分用二进制表示,小数部分采用乘以2的方式,依次取得乘以2之后的整数部分,直到小数部分为0或者无限小数为止(这也是为什么浮点数不是精确的),于是1.5用二进制表示就是1.1
2 浮点数存储
浮点数的存储采用的是科学计数法:1位符号位,8位阶码,23位尾数,共32位。
就1.0f,采用二进制表示是1.0, 符号位是0(正数), 小数点不需要移动(小数点移动至第一位和第二位之间,右移为负数),于是阶码表示为127+0=127 尾数为0
于是表示成: 0 0111 1111 00000000 0000000000 0000000
若采用Int类型来读就是1065353216
相关文章推荐
- const int* a = &b 和 const* int a = &b的区别
- javascript parseInt&Number函数的区别
- 有关(int&)和(int)的区别
- 有关(int&)和(int)的区别
- int的一点事,读《深入C#内存管理来分析值类型&引用类型,装箱&拆箱,堆栈几个概念组合之间的区别》
- (int&)a和(int)a的区别
- (int&)a 与 (int)&a 有什么区别!疑惑!!!!公司应聘考试题目!
- C++中static_cast、const_cast、reinterpret_cast的用法举例,附带举例说明强制类型转换时int和int&的区别
- (int&)a和(int)a的区别
- (int&)a和(int)a的区别
- (int&)a和(int)a的区别
- (int)a、&a、(int)&a、(int&)a的区别,很偏僻的题
- JAVA中Double与double(Integer&int)之间的区别
- int const* func(const int&) | const int* func(const int&) | int *func() const区别
- 有关(int&)和(int)的区别
- (int&)a和(int)a的区别
- (int)a、&a、(int)&a、(int&)a的区别,很偏僻的题
- [c/c++语言知识点1]int a, (int) &a, (int &)a区别
- <%!int n = 1 %> 与<%int n = 1 %> 的区别
- Mysql数据库int(1)和tinyint(1)的区别&&扩展阅读