2017-04-08 54 views
0

我在将int转换为float时遇到问题。我试图键入转换,但它似乎不工作。我究竟做错了什么?将int转换为C中的浮点数

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); 
} 
+0

的'P =(浮子*)X;'分配在功能抹杀指针在上一行中分配的存储空间,以便每当有内存泄漏你调用这个函数。 –

回答

3

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

您只需将int的值赋值给float即可进行转换。

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

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

输出:

4 == 4.000000