读书人

很简单一个有关问题

发布时间: 2012-02-24 16:30:39 作者: rapoo

很简单一个问题
float a = 1.0f;
cout < < (int)a < < endl;
cout < < (int&)a < < endl;
cout < < boolalpha < < ( (int)a == (int&)a ) < < endl; // 输出什么?
当中(int&)取的是什么啊.float类型怎么表示??

[解决办法]
小数的表示一般分为定点和浮点,浮点数一般由尾数(M),指数(E)和基数(B)三部分表示.X=M*BE.
为了便于移植,一般都遵循IEEE754标准。有的比较简单的单片机上不遵循。
[解决办法]
简单地解释一下,(int&)a的意思就是将a的地址后连续的四个字节的数据提取出来按int格式进行“翻译”。

就像我们存储八进制和十六进制各个翻译方式不一样的道理。把十六进制数据转换方式比作int,而把八进制转换方式比作float,如果我们将数字8按照八进制的翻译方式存储,那么存储进的数据就是10,你的int&就相当于提取这个数字再用十六进制翻译,翻译回来就不再是8而是16了。
当然这个比喻并不是那么恰当,但希望可以帮助LZ理解这个问题。

读书人网 >C++

热点推荐