【问题标题】:Converting an int to a float in C在 C 中将 int 转换为 float
【发布时间】:2017-09-04 03:05:06
【问题描述】:

我无法将 int 转换为 float。我尝试输入转换,但它似乎不起作用。我做错了什么?

float *six(const int *x) {
    float *p = malloc(sizeof(x));
    p = (float *)x;
    return p;
}

int main() {
    float *p_six;
    int i4 = 4, i432 = 432;

    p_six = six(&i4);
    printf("%d == %f\n", i4, *p_six);
    free(p_six);
}

【问题讨论】:

  • 函数中的p = (float *)x;赋值抹掉了上一行分配的内存指针,所以每次调用函数都会有内存泄漏。

标签: c pointers type-conversion int


【解决方案1】:

您不能将float * 指向int 并期望它被正确解释。它们有非常不同的表示,所以你最终会得到垃圾。

您只需将您的int 值分配给float,它就会被转换。

int main()
{
    float f;
    int i = 4;

    f = i;
    printf("%d == %f\n", i, f);
    return 0;
}

输出:

4 == 4.000000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 2021-10-12
    • 2019-12-04
    • 2011-08-09
    • 2011-11-02
    • 1970-01-01
    • 2016-05-25
    相关资源
    最近更新 更多