Oddio che sciocco che sono, hai ragione *x - 1 non è un assegnamento.

Quindi diciamo che *x - 1 viene memorizato localmente nella funzione f per fare il confronto e poi viene cancellato all'uscita della funzione?