2017-04-08 6 views
0

Ich habe Probleme beim Konvertieren eines int in ein float. Ich habe versucht, Conversion einzugeben, aber es scheint nicht zu funktionieren. Was mache ich falsch?Umwandlung eines Int in einen Float in 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

Die 'p = (float *) x;' Zuordnung in der Funktion, um den Zeiger auf die in der vorhergehenden Zeile zugeordneten Speicher auslöscht, so hat man einen Leck Speicher jedes Mal, Du rufst die Funktion an. –

Antwort

3

Sie können keine float * auf eine int und erwarten, zeigen Sie es richtig zu interpretieren. Sie haben sehr unterschiedliche Darstellungen, so dass Sie mit Müll enden werden.

Alles, was Sie tun müssen, ist Ihre int Wert zu einem float zuweisen und es wird konvertiert werden.

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

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

Output:

4 == 4.000000