氯的平方 2019-09-17 13:15 采纳率: 100%
浏览 245
已采纳

关于在打印时出现不匹配的问题?

#include
int main(void)
{
float a;
a=3.0;
printf("%ld",a);
return 0;
}

在这种情况下为什么打印出来的结果是0?
3.0在栈里面的存储是01000000010000000000000000000000
在float类遇上printf()时会转换为double类型
用%ld打印读取4个字节
01000000000010000000000000000000也不该打印出0来啊
为什么?????????????????????

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-09-17 13:22
    关注
    #include <stdio.h>
    
    int main(void)
    {
    float a;
    a=3.0;
    printf("%ld",a);
    return 0;
    }
    

    在我这里输出结果是140731755147032 (二进制11111111111111010101010010001100010111100011000)

    这个不同编译器可能不同,毕竟你类型不对,所以和编译器的内存分配有关

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 3月14日