codice:
#include <iostream>
#include <cstdlib>
using namespace std;
int f(int, int);
int main() {
int x=1, y=2;
y=f(y,x);
cout<<"x= "<<x<<"y="<<y<<endl;
}
int f(int x, int &z){

z=x+y; // y undlecared (first use this fuction) 
return z+1;
}
magari sbaglio , ma il problema è che la funzione f(int, int) non vede la variabile y definita nel main(). Il programma compila e stampa x=1 y=5 se metti la y=2; come variabile globale.
inoltre il prototipo di f non è uguale poi alla sua definizione:
int f(int, int);
...
int f(int x, int& z){
...
}

devono essere uguali.