Salida extraña, no como se esperaba

lo siento por hacerte una pregunta estúpida, pero no puedo entender por qué sigo obteniendo esta salida. Entonces aquí está mi código:

#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;
}

así que lo que esperaba ver en la primera línea de mi salida fue el resto y luego el cociente que obtengo después de llamar a la función getRemainderOf (). Pero en cambio, cuando cout el valor del cociente de esa manera veo que el valor del cociente es un valor basura. Por lo tanto, el valor de la variable no cambia aunque lo haya pasado a la función mediante el uso de referencia. Lo curioso es que si agrego el resto (obtenido llamando a la función) y el cociente por separado, lo haré bien. Veo que el problema podría estar en llamar a la función como un argumento de la función operador <<, pero no entiendo por qué el valor del cociente no cambia ya que llamo a la función antes de generarla. La asociatividad de este operador es de izquierda a derecha, entonces, ¿qué pasa? Entonces, ¿podría decirme cuál es el motivo de esta salida?

Respuestas a la pregunta(2)

Su respuesta a la pregunta