皮尔逊的胡萝卜 2022-07-31 09:40 采纳率: 100%
浏览 32
已结题

int的变量为什么不能输出%f

1.int的变量为什么不能输出%f,求详解。

img


2.为什么不是全输出,求详解

img

  • 写回答

4条回答 默认 最新

  • 私房菜 移动开发领域优质创作者 2022-08-01 01:53
    关注

    楼上各位有些误导人了!!!!!

    下面是最简单的printf 调用了。。。

    #include <stdio.h>
    
    int main()
    {
        int a = 10;
        printf("%f\n", a);
        
        return 0;
    }
    

    不出意外printf 输出的结果为0,但是为什么为0?
    说对不上也对,说%f 是针对浮点型也对,但是都没有说到重点上。。。。
    主要是因为int 和float 在内存中存放的方式不一样。。。。
    假设a 的内存地址为0x1230,那么0x1230 存放的是0xa 或者二级制1010,那么0x1231、0x1232、0x1233 存放的都是0。。。
    ok。。。。这个时候printf 需要按照float 输出,那么按照float 的4个字节在内存中exponent 部分为0,也就是指数部分为2 的 -127 次方,那么无论0x1230 里是多少,最后的值都为0
    那,怎么让int 类型的变量输出为 %f 呢?非常简单:

    printf("%f\n", (float)a);
    

    希望这个回答能帮到你。。。。如果有其它的问题,随时欢迎交流~~~~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 8月8日
  • 已采纳回答 8月1日
  • 专家修改了标签 8月1日
  • 创建了问题 7月31日

悬赏问题

  • ¥30 matlab ode45 未发现警告,但是运行出错
  • ¥15 vscode platformio
  • ¥15 代写uni代码,app唤醒
  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部