Die zweite Möglichkeit eines Funktionsaufrufs ist die Nutzung in einem Ausdruck. Funktionen mit Rückgabewert können genauso wie Variablen eingesetzt werden, d.h. Variablen zugewiesen werden, in Berechnungen verwendet werden, oder an andere Funktionen übergeben werden. Beispiele mit den zwei Funktionen potenz und maximum von vorhin sind:
float zahl=potenz(43.4532,3);
int i=6;
zahl*=maximum(3,i);
cout << potenz(zahl,maximum(i*i,i*2)) << endl;
Aber auch Funktionen mit Rückgabewert können wie ein Befehl aufgerufen werden. Das würde bei den beiden Funktionen im Beispiel keinen Sinn machen (auch wenn es machbar wäre), aber falls der Rückgabewert gerade nicht von Interesse ist, so kann man darauf verzichten, die Funktion in einen Ausdruck einzubauen.
Üblich ist es z.B. Funktionen, die keinen Rückgabewert
benötigen, mit einem Rückgabewert int zu versehen,
der einen Fehlercode zurückgibt. Ein Rückgabewert Null
entspricht dann einer erfolgreichen Ausführung, ein Rückgabewert
ungleich Null gibt die Art des Fehlers an. Wenn man sich beim Aufruf
der Funktion sicher ist, daß alles glatt läuft (wobei
natürlich Vorsicht geboten ist), dann kann man die Funktion wie
einen Befehl nutzen, der Fehlercode wird ignoriert. Falls man eine
Kontrolle möchte, so kann man den Fehlercode abfragen, so z.B.
bei einer Funktion int oeffneDatei(char* name) { ... }
über oeffneDatei(sicher.txt);
oder
if (oeffneDatei(unsicher.txt)) cerr <<
"Fehler beim Öffnen." << endl;