Hi zusammen, ich habe hier ein kleines Testprogramm welches folgende Ausgabe liefert: komisch!Das ist aber 55 Ich hätte den normales Satz "Das ist aber komisch" erwartet und selbst die 55 nicht mehr. Kann mir einer kurz erklären oder aufs Pferd helfen warum die übergebenen Parameter für printf() in dieser Reihenfolge abgearbeitet werden? Das ganze ist ein Code für C++, weil auf dem PC probiert, müsste doch aber in unserer AVR-Welt genauso laufen, oder? Danke danke :) int test(void); void _tmain(int argc, _TCHAR* argv[]) { printf("Das ist aber %d",test()); } int test(void){ printf("komisch!"); return 55; }
Na, bevor Dein printf in main aufgerufen wird, werden erstmal dessen Parameter abgearbeitet. Und dazu gehört der Aufruf Deiner Funktion "test". Also ist es doch logisch, daß die zuerst zum Zuge kommt, bevor ihr Rückgabewert an das printf in main übergeben werden kann.
Liegt, wie immer, an der Reihenfolge der Funktionsaufrufe und was dort gemacht werden soll! Anweisung printf -> Aufruf von test() -> Test soll "komisch!" schreiben und 55 zurückgeben -> Einsetzen des Rückgabewertes von Test -> ... Edit: zu langsam ...
Hey, danke für die schnellen Reaktionen! Ok, bei Aufruf einer Funktion werden innerhalb der Parameter vorhandene Funktionen ausgeführt. Und die 55 schreibt er hinterher weil eine Dezimalzahl (%d) folgen soll und als "Quelle" test() verwendet werden soll, also dessen Rückgabewert? Aber wenn ich das %d und test() aus dem printf()-Aufruf entferne wie hier liefert er nur noch "Das ist aber". Warum? Führt C in diesem Fall test() nicht mehr beim Funktionsaufruf auf, weil er merkt das es innerhalb der Funktion nicht mehr gebraucht wird? int test(void); void _tmain(int argc, _TCHAR* argv[]) { printf("Das ist aber "); } int test(void){ printf("komisch!"); return 55; } Markierten Text zitieren | Antwort |
boah sorry, vergesst bitte die letzte Frage :) nun hab ichs doch geschnallt :) Vielen Danke für die schnelle Hilfe!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.