#define funktioniert nicht, warum?? tut.at
Re: #define funktioniert nicht, warum?? tut.at
Was genau funktioniert denn nicht?
Physics is like sex: sure, it may give some practical result, but that's not why we do it.
(Richard P. Feynman)
(Richard P. Feynman)
-
- Beiträge: 92
- Registriert: Fr Jan 22, 2010 1:49 pm
Re: #define funktioniert nicht, warum?? tut.at
Hallo,
also sobald ich den Betrag in Euro eingegeben habe (case5) kommt ein Windows Fenster wo drinen steht Taschenrechner.exe funktioniert nicht mehr und schließt mir das Fenster mit meinem Programm. Stimmt den das Programm so wie ich es geschrieben habe? oder wo liegt da der Fehler?
Build zeigt keine Fehler an.
also sobald ich den Betrag in Euro eingegeben habe (case5) kommt ein Windows Fenster wo drinen steht Taschenrechner.exe funktioniert nicht mehr und schließt mir das Fenster mit meinem Programm. Stimmt den das Programm so wie ich es geschrieben habe? oder wo liegt da der Fehler?

Build zeigt keine Fehler an.
Re: #define funktioniert nicht, warum?? tut.at
Das schöne ist natürlich das bei mir alles funktioniert.
Da gibt es jetzt 2 Möglichkeiten...
Hast du einen Debugger?
Da gibt es jetzt 2 Möglichkeiten...
Hast du einen Debugger?
Physics is like sex: sure, it may give some practical result, but that's not why we do it.
(Richard P. Feynman)
(Richard P. Feynman)
-
- Beiträge: 92
- Registriert: Fr Jan 22, 2010 1:49 pm
Re: #define funktioniert nicht, warum?? tut.at
Ich nutze CODE::BLOCKS, ich glaube der hat sowas. Steht zumindest mal als Funktion im Programm.
Re: #define funktioniert nicht, warum?? tut.at
Naja, nehmen wir mal besser an du hast keinen ^^
In diesem Fall versucht man die Codezeile, in der der Fehler auftritt, einzukreisen.
Du kannst entweder systematisch Code ausgrenzen, indem du ihn auskommentierst, oder du fügst Dummy-Ausgaben ein.
In Code heißt das, dass du einfach mal hinter den scanf-Befehl eine Ausgabe stellst. Dann weißt du nämlich, ob der Fehler beim scanf passiert oder danach.
Die Ausgabe kann so aussehen:
In diesem Fall versucht man die Codezeile, in der der Fehler auftritt, einzukreisen.
Du kannst entweder systematisch Code ausgrenzen, indem du ihn auskommentierst, oder du fügst Dummy-Ausgaben ein.
In Code heißt das, dass du einfach mal hinter den scanf-Befehl eine Ausgabe stellst. Dann weißt du nämlich, ob der Fehler beim scanf passiert oder danach.
Die Ausgabe kann so aussehen:
Code: Alles auswählen
scanf ("%lf", &zahl);
printf ("Jetzt befinden wir uns hinter scanf und vor printf\n");
printf ("Das Ergebnis lautet: %lf\n",ms(zahl) );
printf ("Jetzt haben wir auch printf geschafft\n");
Physics is like sex: sure, it may give some practical result, but that's not why we do it.
(Richard P. Feynman)
(Richard P. Feynman)
-
- Beiträge: 92
- Registriert: Fr Jan 22, 2010 1:49 pm
Re: #define funktioniert nicht, warum?? tut.at
Hallo,
ich habe nun
geschrieben. Das hinter Scan ist im Programm selbst nicht zu sehen. ABER ich hatte nun die Windows Konsole offen und ich habe im CODE::BLOCKS Build und RUN ausgeführt. Da hat alles ganz normal funktioniert. So wie sollte. ICh glaube fast wenn es in der Windows Konsole läuft und in Code::Blocks selber nicht stimmt doch da was nicht, oder??
ich habe nun
Code: Alles auswählen
case 5: printf ("Geben Sie den Betrag in Euro ein: ");
scanf ("%lf", &zahl);
printf ("Hinter Scan");
printf ("Das Ergebnis lautet: %lf\n",ms(zahl) );
break;
Re: #define funktioniert nicht, warum?? tut.at
Kann an den Einstellungen von Code::Blocks liegen. Am besten du verwendest einfach immer die Windows-Konsole ^^
Physics is like sex: sure, it may give some practical result, but that's not why we do it.
(Richard P. Feynman)
(Richard P. Feynman)
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: #define funktioniert nicht, warum?? tut.at
Wiso sollte das define nicht funktionier?dragonfloez hat geschrieben:bei mit hat sich im laufe des Tutorials nochmal eine Frage zu define aufgetan.
Wiso funktionier das define in diesem Programm nicht??
Tut's doch?
Aber bitte schau Dir Funktionen an... defines sind nicht unbedingt Mittel der Wahl.
Ansonsten trenne mal die Klammern:
#define ms(a) ((a*19)/100)
Was kommt denn bei Dir überhaupt raus?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
-
- Beiträge: 92
- Registriert: Fr Jan 22, 2010 1:49 pm
Re: #define funktioniert nicht, warum?? tut.at
Laut Programm bekomme ich bei einer Eingabe von 50 Euro den Betrag von 9,50 raus. Mehrwertsteuer. In der Windows Konsole funktioniert das Programm, in Code::BLOCKS nicht!?
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: #define funktioniert nicht, warum?? tut.at
9 Euro 50 Cent.
Passt doch.
Noch etwas:
Der Text, den du auf der Konsole siehst, wird eventuell erst ausgegeben, nachdem eine Zeilenende-Zeichen ausgegeben werden soll ('\n').
Wenn du nun eine Dummyausgabe vor einen kritischen Punkt in deinem Code setzt, und das Programm in diesem kritischen Bereich abstürzt, dann siehst du wahrscheinlich die Ausgabe (die ja noch ausgeführt wurde) nicht mehr. Denn die Ausgabe kann zeitlich versetzt erfolgen. Ist das Programm aber nicht mehr am Laufen (wegen dem Absturz im kritischen Bereich), dann wird auch kein Text des Programmes mehr auf der Konsole ausgegeben.
Das selbe Phänomen tritt im übrigen auch dann auf, wenn du aufwendige Rechenoperationen überwachen willst.
Das wäre falsch. Richtig wäre so etwas:
Passt doch.
Noch etwas:
AnGaiNoR hat geschrieben:[...]oder du fügst Dummy-Ausgaben ein.
In Code heißt das, dass du einfach mal hinter den scanf-Befehl eine Ausgabe stellst. Dann weißt du nämlich, ob der Fehler beim scanf passiert oder danach.
Die Ausgabe kann so aussehen:Code: Alles auswählen
scanf ("%lf", &zahl); printf ("Jetzt befinden wir uns hinter scanf und vor printf\n"); printf ("Das Ergebnis lautet: %lf\n",ms(zahl) ); printf ("Jetzt haben wir auch printf geschafft\n");
Wenn du Dummyausgaben verwendest (was meiner Ansicht nach durchaus sinnvoll ist, ich verwende es selbst), dann musst du eines beachten:dragonfloez hat geschrieben:Hallo,
ich habe nun
geschrieben. Das hinter Scan ist im Programm selbst nicht zu sehen. ABER ich hatte nun die Windows Konsole offen und ich habe im CODE::BLOCKS Build und RUN ausgeführt. Da hat alles ganz normal funktioniert. So wie sollte. ICh glaube fast wenn es in der Windows Konsole läuft und in Code::Blocks selber nicht stimmt doch da was nicht, oder??Code: Alles auswählen
case 5: printf ("Geben Sie den Betrag in Euro ein: "); scanf ("%lf", &zahl); printf ("Hinter Scan"); printf ("Das Ergebnis lautet: %lf\n",ms(zahl) ); break;
Der Text, den du auf der Konsole siehst, wird eventuell erst ausgegeben, nachdem eine Zeilenende-Zeichen ausgegeben werden soll ('\n').
Wenn du nun eine Dummyausgabe vor einen kritischen Punkt in deinem Code setzt, und das Programm in diesem kritischen Bereich abstürzt, dann siehst du wahrscheinlich die Ausgabe (die ja noch ausgeführt wurde) nicht mehr. Denn die Ausgabe kann zeitlich versetzt erfolgen. Ist das Programm aber nicht mehr am Laufen (wegen dem Absturz im kritischen Bereich), dann wird auch kein Text des Programmes mehr auf der Konsole ausgegeben.
Das selbe Phänomen tritt im übrigen auch dann auf, wenn du aufwendige Rechenoperationen überwachen willst.
Code: Alles auswählen
printf("ich bin ein schlechter dummy, der eventuell gar nicht mal mehr zu lesen ist");
// tue etwas aufwendiges oder etwas, was das Programm zum Absturz bringt
Code: Alles auswählen
printf("ich bin ein guter dummy. Mich kann man auch lesen, wenn direkt hinter mir ein Fehler auftritt!\n");
// aufwendiger oder gefährlicher Code bitte hier einsetzen ;) ...
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.