iTalent12 2021-10-12 10:52 采纳率: 100%
浏览 35
已结题

为什么用%d打印出的浮点数不符合我的预期?

刚学C语言数据的存储,了解了数据的存储格式,便出现了以下问题,希望帮我解答下;
当我定义一个float型变量a时,假设a=9.0,则a在32位系统中以浮点型格式存储为0100 0001 0001 0000 0000 0000 0000 0000,此时我用整型的格式去打印这个数,我预计程序应该是将该内存取出并以整型的方式去计算,结果应该是1091567616,但实际结果却是0;
代码如下:此代码输出为0;

int main()
{
    float b = 9.0;
    //0100 0001 0001 0000 0000 0000 0000 0000
    printf("%d\n", b);
    return 0;
}

如果我把代码写成这样,结果又与我预期相符合,下列代码输出为1091567616;

int main()
{
    float b = 9.0;
    //0100 0001 0001 0000 0000 0000 0000 0000
    int* pb = (int*)&b;
    printf("%d", *pb);
    return 0;
}

这两个代码差别在哪,以及为什么第一个代码的执行结果和我的预期不相同?

  • 写回答

3条回答 默认 最新

  • 於黾 2021-10-12 10:53
    关注

    你要打印浮点数,用%f
    -=-=
    %d指定格式是整型,而你传入的变量是float型,那么系统会把float的4个字节当整型输出,就会变成一个非常大的数字。

    评论
  • qzjhjxj 2021-10-12 11:01
    关注

    供参考:

    #include <stdio.h>
    int main()
    {
        float b = 9.0;
        //0100 0001 0001 0000 0000 0000 0000 0000
        printf("%d\n",(int)b);
        return 0;
    }
    
    
    评论
查看更多回答(2条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 设计程序,利用函数getCharacterCnt,实现求解出str所指字符串中指定字符的个数,并返回此值。
  • ¥15 设计程序,实现管理30个学生5门课程的成绩,功能模块要求如下。
  • ¥15 B660主板安装xp系统老是出现错误怎么办
  • ¥15 定义过的变量报错未定义
  • ¥15 如何在EXCEL某单元格中查找是否存在另一列中的内容。
  • ¥50 非对称加密(相关搜索:密码学)
  • ¥15 关于非编程寻迹小车的分析
  • ¥15 java导出EXCEL这里已经执行成功了,但是流浪器没有下载
  • ¥15 帮我把代码改的能正常运行就行
  • ¥50 有限元修正、模型修正、最小二乘法,详细步骤