地上一个猴 2022-03-22 16:34 采纳率: 66.7%
浏览 98
已结题

浮点型数据取整型指针 奇怪现象

本来想用整型指针去取浮点型变量地址,然后再用 *整型指针去使用浮点值。

发现好像并不能这样做,而且遇到一个奇怪的现象,
用整型指针去取浮点型变量的地址。
不加打印无法取到值,
加了如下 1111 行,先把变量打印一遍,竟然能取到正确的值了。
这算是错错得对?还是有其他问题。

#include <stdio.h>
int main()
{
int *pu32Float = NULL;
float floatData = 4.55;

printf("IntData:%f\n",floatData ); /* 1111 */

pu32Float = (int *)&floatData ;
printf("OutData:%f\n",*pu32Float );
return 0;
}

img

c-free上试了下也是一样的现象

img

img

  • 写回答

4条回答 默认 最新

  • 关注

    结果不应该是4.550000
    int类型和float类型在内存中的存储规则是不一样的,虽然两者都指向一块内存,但是在printf中 *pu32Float这里先按照int类型的规则取出数据,然后把这个数据提升为float类型,出来的结果不一定是4.550000。
    用下面的代码才会是4.550000:

    #include <stdio.h>
    int main()
    {
        int* pu32Float = NULL;
        float floatData = 4.55;
    
        printf("IntData:%f\n", floatData); /* 1111 */
    
        pu32Float = (int*) & floatData;
        printf("OutData:%f\n", *((float*)pu32Float));
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • CSDN专家-link 2022-03-22 16:36
    关注

    doubleData变量哪来的啊?
    你输出界面截图看看

    评论 编辑记录
  • 於黾 2022-03-22 16:40
    关注

    你这代码理论上根本编译不过去

    评论
  • 有问必答小助手 2022-03-22 17:03
    关注
    您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
    PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 已采纳回答 3月22日
  • 修改了问题 3月22日
  • 修改了问题 3月22日
  • 展开全部

悬赏问题

  • ¥15 AD20 PCB板步线 这个要怎么步啊
  • ¥50 关于《奇迹世界》1.5版本,数据修改
  • ¥15 请问这个问题如何解决(关键词-File)
  • ¥50 visual studio 2022和EasyX图形化界面
  • ¥15 找一下报错原因,纠正一下
  • ¥50 Cox回归模型Nomogram图制作报错
  • ¥20 SQL如何查询多级用户的数据
  • ¥15 给车牌识别代码加一个识别轮廓长宽比的代码
  • ¥30 商品价格预测的transformer模型优化
  • ¥15 SQL中的图片,无法传回php到前端。没有任何报错。