C:为什么将int转换为float输出0.000?

时间:2019-01-25 12:23:21

标签: c pointers casting

我一直在做这个测验:https://www.sanfoundry.com/c-quiz-pointers-addresses/

并且不理解为什么将int转换为float会输出0.000000

    #include <stdio.h>
    int main()
    {
            int i = 10;
            void *p = &i;
            printf("%f\n", *(float*)p);
            return 0;
    }

预期产量:10.000000

实际输出:0.000000

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您不是将int投射到float

您正在尝试 int*投射到float*

该语言不允许您这样做,因此代码的行为是未定义。基本原理是为支持C的体系结构提供最大的灵活性:它们可能会将float数据放置到int数据的不同存储位置。