seltsame Abarbeitung des printf(); ?Hi

Gast #2376566
Lesenswert?

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;
}
Gast #2376600
Lesenswert?

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 |

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren