Seltsame Ausgabe, nicht wie erwartet

Es tut mir leid, dass Sie eine dumme Frage gestellt haben, aber ich kann nicht herausfinden, warum ich diese Ausgabe immer wieder erhalte. Also hier ist mein Code:

#include <cstdio>
#include <iostream>

using namespace std;
unsigned n = 4242;

int getRemainderOf(int m, int n, int& quotient);

static int l = 0;   
int main()
{

    int quotient;  // the value of which should be changed after calling the func.

    for(int i=-1; i<=1; ++i)
    {
        for(int j=-1; j<=1; ++j)
        {
            if( i && j )
            {

                cout << "("<< i*3 << "," << j*7 << ") "  <<( getRemainderOf(i*3, 7*j, quotient) ) << " " << quotient <<endl;

                cout << "("<< i*7 << "," << j*3 << ") "  << getRemainderOf(i*7, 3*j, quotient) << " "; cout << quotient <<endl;
            }
        }
    }

    return 0;
}

int getRemainderOf(int m, int n, int& quotient)
{
    ++l;
    cout << l <<endl;
    quotient = m / n;
    cout << " quotient " << quotient <<endl;
    return m % n;
}

Was ich also in der ersten Zeile meiner Ausgabe erwartet hatte, war der Rest und dann der Quotient, den ich bekomme, nachdem ich die Funktion getRemainderOf () aufgerufen habe. Aber stattdessen sehe ich, wenn ich den Wert des Quotienten so sehe, dass der Wert des Quotienten ein Müllwert ist. Der Wert der Variablen wird also nicht geändert, obwohl ich ihn mithilfe der Referenz an die Funktion übergeben habe. Das Lustige ist, wenn ich den Rest (erhalten durch Aufrufen der Funktion) und den Quotienten getrennt aufrufe, bekomme ich es richtig. Ich sehe, dass das Problem möglicherweise darin besteht, die Funktion als Argument der Operatorfunktion << aufzurufen, aber ich verstehe nicht, warum der Wert des Quotienten nicht geändert wird, da ich die Funktion vor der Ausgabe aufrufe. Die Assoziativität dieses Operators ist von links nach rechts. Was ist also falsch? Könnten Sie mir bitte den Grund für diese Ausgabe mitteilen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage