using namespace std;
int foo1(int &n);
int foo2(int n);
int main() {
    int n1, n2;
    cout << foo1(n1) << n1 << foo2(n2) << endl;
}
int foo1(int &n) {
    n = 3;
    return 1;
}
int foo2(int n) {
    return 2;
}
and I get output 1 (trash val) 2.
Why n1's value is not modified? foo1() is worked faster than cout << n1;?
When reference var's value modified?