Advertisement

类型转换_C++中的int

阅读量:

类型转换_C++中的int&

看到面试题中有道有趣的,这里mark

复制代码
    ...
    float a = 1.0f;
    cout << (int)a << endl;
    cout << &a << endl;
    cout << (int&)a << endl;
    ...

在本地调试时查看到返回值 10 6535 3216 ,这等于十六进制的 3f80 0000 。为什么会这样?(误以为引用转换 ==!)需要进一步了解浮点数在内存中的表示方式。


浮点数

为了便于实现跨平台开发(软件移植),遵循IEEE754标准:其中32bit浮点型由符号字段、指数字段和分数字段组成;具体来说,在32bit格式中符号字段占用1bit、指数字段占用8bit、分数字段占用23bit;而64bit格式则分配给符号字段1bit、指数字段11bit以及分数字段52bit。
在IEEE754标准下进行编码时,默认情况下使用移码表示法来计算指数部分;具体而言,在单精度(32bit)中偏移量设定为+_{\text{offset}}=_{\text{ bias }}=_{\text{ }}
+_{\text{offset}}=_{\text{ bias }}=_{\text{ }}
在双精度(64b

全部评论 (0)

还没有任何评论哟~