2016-03-27 9 views
-2

Ich versuche, einige grundlegende Code in C ausführen, um 2 Float-Variablen zu deklarieren, und dann teilen Sie sie und legen Sie diesen Wert in der 3. Variable. Danach drucke ich alle 3.Probleme mit C unter Verwendung von float und printf

#include <stdio.h> 
int main() 
{ 
    /* variable definition: */ 
    float a, b, c; 
    /* variable initialization */ 
    a = 1.2; 
    b = 2.7; 
    c = a/b; 
    printf("Floats (a,b) and quotient (c) are : %d,%d,%d \n", a,b,c); 
    return 0; 
} 

ich die Online-Compiler „www.ideone.com“ mit dem Code kompilieren und ausführen, und das ist das Ergebnis erhalte ich:

Success time: 0 memory: 2156 signal:0 

Schwimmer (a, b) und Quotient (c) sind: 1073741824,1072902963, -1610612736

Kann jemand sehen, ob vielleicht ich einen Fehler im Code gemacht habe? Es ist für eine Klasse und alles funktionierte gut für jeden Schritt der Richtungen, bis ich von Int zu Float wechselte.

+0

% d erwartet ganzzahlige Argumente, siehe printf-Dokumentation. – fvu

+0

http://www.cplusplus.com/reference/cstdio/printf/% d ist für Ganzzahlen,% f für Gleitkommazahlen. – OldProgrammer

Antwort

1

Sie wollen Schwimmer drucken, so dass sich das ändern:

printf("Floats (a,b) and quotient (c) are : %d,%d,%d \n", a,b,c); 

dazu:

printf("Floats (a,b) and quotient (c) are : %f,%f,%f \n", a,b,c); 

Weitere, die ref überprüfen.

+1

Danke, das hat perfekt funktioniert, ich hatte keine Ahnung, dass ich das tun musste, oder dass es für einen bestimmten Datentyp spezifisch war! –

+0

Jetzt kennst du @RickHammer! ;) – gsamaras

0

%d ist keine korrekte Konvertierung für Schwimmer, verwenden %f statt

Änderung:

printf("Floats (a,b) and quotient (c) are : %d,%d,%d \n", a,b,c); 

zu:

printf("Floats (a,b) and quotient (c) are : %f,%f,%f \n", a,b,c); 

und Sie sollten in Ordnung sein.