c – Usar un solo return en la definicion de una funcion

Estoy usando el libro Aprendiendo C en 21 días en el capitulo 5 nos enseñan el uso de funciones, las variables de retorno y los parametros. En este ejercicio se busca hacer que en la definicion de funcion SOLO se use un 1 return. Usé una variable local para guardar el valor mayor entre a y b pero a la hora de mandar a llamar la función en main creo que algo no sale bien, cuando compila pide los numeros pero en lugar de decir cual es mayor sale 6422292. ¿Qué hice mal? ¿Qué puedo hacer? Gracias.

    /* Reescribir el codigo para que sólo se use un return 

     ****CODIGO ORIGINAL***
   
    Demuestra el uso de varios return en una funcion */

    #include<stdio.h>

    int x,y,z;

    //Prototipo de funcion
    int MasLargo_De(int a, int b);

   int main()
   { 
   puts("Ingresa dos valores: n");

   scanf("%d%d",&x,&y);

   z=MasLargo_De(x,y); //se manda a llamar la funcion
   printf("n El valor mas largo es: %d",z);

  return 0;
  }

  int MasLargo_De(int a, int b) //Se usan 2 return, return a y return b
  {
  if(a>b)
    return a;
  else
    return b;
   }

//CODIGO NUEVO (REESCRITO)

 #include<stdio.h>

int x,y,z;

//Prototipo de funcion
int MasLargo_De(int a, int b);

int main()
{
puts("Ingresa dos valores: n");
scanf("%d%d",&x,&y);

z=MasLargo_De(x,y); //se manda a llamar la funcion
printf("n El valor mas largo es: %d",z);

    return 0;
} 

//Problema: usar un solo return en la definicion de la funcion

int MasLargo_De(int a, int b)
{   int u;  //variable local

if (a>b)
    a=u;
else
    b=u;

return u;

 }