int klappt, float spielt verrückt

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • int klappt, float spielt verrückt

    Hallo,

    wenn ich bei diesem Code bei der Variable "zahl" ein float statt ein int einsetze kommen nur komische Zahlen raus z.B.

    Ihre Wahl: 2
    Halbiert: -1054402912


    Mit int klappts aber problemlos. Weiß einer woran das liegt?

    MfG

    Hier ist der Code:

    Quellcode

    1. #include <stdio.h>
    2. static int zahl; //wenn ich hier float einsetze klappts ni
    3. void verdoppeln(void);
    4. void halbieren(void);
    5. void verdoppeln(void) {
    6. zahl *= 2;
    7. printf("Verdoppelt: %d\n", zahl);
    8. }
    9. void halbieren(void) {
    10. zahl /= 2;
    11. printf("Halbiert: %d\n", zahl);
    12. }
    13. int main(void) {
    14. int wahl;
    15. printf("Bitte geben Sie eine Zahl ein: ");
    16. scanf("%d",&zahl);
    17. printf("Wollen Sie diese Zahl\n");
    18. printf("\t1.)verdoppeln\n\t2.)halbieren\n\nIhre Wahl: ");
    19. scanf("%d",&wahl);
    20. switch(wahl) {
    21. case 1 : verdoppeln();
    22. break;
    23. case 2 : halbieren();
    24. break;
    25. default : printf("Unbekannte Eingabe\n");
    26. }
    27. return 0;
    28. }
    Alles anzeigen


    (Quelle: GalileoComputing OpenBook - C von A bis Z)
  • So, es lag an der eingabe bzw. Ausgabe von

    Quellcode

    1. float
    . Float kann dur %f, %g, %e eingelesen und ausgegeben werden.
    Ich hab dein Code mal umgeschrieben(Ich hab Pointer verwendet)

    Quellcode

    1. #include <iostream>
    2. //static float zahl; //wenn ich hier float einsetze klappts ni
    3. void verdoppeln(float *zahl);
    4. void halbieren(float *zahl);
    5. void verdoppeln(float *zahl) {
    6. (*zahl) *= 2;
    7. printf("Verdoppelt: %g\n", *zahl);
    8. }
    9. void halbieren(float *zahl) {
    10. (*zahl) /= 2;
    11. printf("Halbiert: %g\n", *zahl);
    12. }
    13. int main() {
    14. float zahl;
    15. int wahl;
    16. printf("Bitte geben Sie eine Zahl ein: ");
    17. scanf("%g",&zahl);
    18. printf ("%g", zahl);
    19. printf("Wollen Sie diese Zahl\n");
    20. printf("\t1.)verdoppeln\n\t2.)halbieren\n\nIhre Wahl: ");
    21. scanf("%d",&wahl);
    22. switch(wahl) {
    23. case 1 : verdoppeln(&zahl);
    24. break;
    25. case 2 : halbieren(&zahl);
    26. break;
    27. default : printf("Unbekannte Eingabe\n");
    28. }
    29. system("Pause");
    30. return 0;
    31. }
    Alles anzeigen

    Greetz SunShine

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von SunShine ()

  • Danke für die Antwort

    Wenn ich deins kompilieren will kommt folgende Fehlermeldung: (Habe Arch Linux mit GCC-Compiler 4.3.2)
    func1.c:1:10: Fehler: #include erwartet "DATEINAME" oder <DATEINAME>
    func1.c: In Funktion »verdoppeln«:
    func1.c:7: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »printf«
    func1.c: In Funktion »halbieren«:
    func1.c:11: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »printf«
    func1.c: In Funktion »main«:
    func1.c:16: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »printf«
    func1.c:17: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »scanf«


    Aber danke für den Tipp mit dem %f jetzt ist mir klar geworden wies geht

    MfG
  • Da ich auch noch Anfänger bin kann ich dir nich begründen WARUM printf() auch mit klappt, aber da in den meisten Büchern auch nur iostream verwendet wird vermute ich das iostream ein Zusammenfassung von funktionen ist. Lass mich aber berichtigen falls es falsch ist. Ich beutze nur iostream und bei mir funtz alles immer einwandfrei. Jedenfalls alle "Anfänger" Funktionen.
    Greetz SunShine