(int) &、(int)、(int &)的区别

(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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值