srhqwe 2023-01-01 21:14 采纳率: 83.3%
浏览 93
已结题

关于C语言float类型与整形之间的代码问题

C语言:

img

为什么打印的是0?
不应该打印1091567616吗
打印成0的原理是什么呢?
这么解决呢?
解决的原理又是什么呢?
求解答!

  • 写回答

1条回答 默认 最新

  • 会修bug的猫 2023-01-02 00:39
    关注

    参数传递的时候,float类型会被转成double传入printf里面所以传入的其实是0x4022000000000000,然后%d截取到低32位,所以就成了0
    如果你想这样做的话可以通过地址来避免

    #include<stdio.h>
    int main()
    {
        float a = 9.0;
        printf("%d",*(int*)(&a));
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 已采纳回答 1月2日
  • 创建了问题 1月1日