在百度知道回答的一道题,其中答错了

#include<iostream>
using namespace std;
void 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;
}

结果:1  1065353216  false
      0  0           true     为什么?

 

解答:

将一个浮点数转化为地址,由于这是强制转换,系统没有任何判断(C++是这样),他就按照原数据进行转换,0.0在系统中存储为全0,因此结果为0,而1.0在计算机中就不是一个1了,它是按照阶码和系数存储的,阶码里面也有很多1,因此输出是一个很大的数

转载于:https://www.cnblogs.com/growing/archive/2010/08/10/1796207.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值