Aufrufe als Operanden in C
Das folgende Programm gibt eine mehr oder weniger zufällig ausgewählte int-Zahl zwischen »0« (einschließlich) und <stdlib.h> »RAND_MAX« (einschließlich) aus.
main.c
#include <stdio.h> /* printf */
#include <stdlib.h> /* rand */int main( void )
{ printf
( "%d\n", rand() ); }stdout
41
Operanden dürfen auch Aufrufausdrücke sein.
Ein Aufruf einer Funktion, die den Typ »int« hat darf überall dort verwendet werden, wo wir bisher auch ein int-Literal oder einen int-Operatorausdruck mit einem Ergebnis vom Typ »double« verwendet haben. Der Aufrufausdruck steht dabei für seinen Wert, also den Rückgabewert der aufgerufenen Funktion.
main.c
#include <stdio.h> /* printf */
#include <stdlib.h> /* rand */int main( void )
{ printf
( "%d\n", ( ( rand() ))); }stdout
41
main.c
#include <stdio.h> /* printf */
#include <stdlib.h> /* rand */int main( void )
{ printf
( "%d\n", -rand() ); }stdout
-41
Wir können die Aufrufklammern »()« als einen unären Postfixoperator ansehen, und das Minuszeichen »-« ist ein unärer Präfixoperator. Die Priorität unärer Postifixoperatoren ist höher als die unärer Präfixoperatoren, so daß der obige Ausdruck wie »-(rand())« ausgewertet wird.
main.c
#include <stdio.h> /* printf */
#include <stdlib.h> /* rand */int main( void )
{ printf
( "%d\n", rand() / RAND_MAX ); }stdout
0
main.c
#include <stdio.h> /* printf */
#include <stdlib.h> /* rand */int main( void )
{ printf
( "%d\n", rand() + 10 ); }stdout
51
main.c
#include <stdio.h> /* printf */
#include <stdlib.h> /* rand */int main( void )
{ printf
( "%g\n", rand() / 10. ); }stdout
4.1
- Priorität und Assoziativität der bisher behandelten Operatoren
() Eingeklammerter Ausdruck
() Aufrufoperator
+ - Unaere vorangestellte Operatoren
* / Multiplikation, Division
+ - Addition, Subtraktion