2 Funktionsaufrufe in einem Statment



  • Welches unterprogramm wird als erstes ausgeführt wenn ich folgenden Code habe?

    int BerechneA()
    {
     ...
    }
    
    int BerechneB()
    {
     ...
    }
    
    ...
    int C = BerechneA() + BerechneB();
    ...
    

    Und ist das bei allen Compilern gleich?



  • int BerechneA()
    {
     printf("Bin jetzt in A\n");
     ...
    }
    
    int BerechneB()
    {
     printf("Bin jetzt in B\n");
     ...
    }
    
    ...
    int C = BerechneA() + BerechneB();
    ...
    

    ...so bekommst du raus, was als erstes ausgeführt wird.
    Zu deiner zweiten Frage: Weiß ich nicht 🙂



  • Da der Operator + (wie die anderen auch) keinen sog. Sequenzpunkt darstellt, ist die Reihenfolge der Funktionsaufrufe undefiniert. Das kann sogar bei eingeschalteten Optimierungen wieder anders sein.
    Nur bei

    int a = BerechneA();
    int b = BerechneB();
    int c = a + b;
    

    sind die Aufrufe genau festgelegt.


Anmelden zum Antworten