您的位置:首页 > 其它

(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: