sì, però prima della chiamata alla funzione richiami un membro di una struttura che è NULL, quindi chiaramente hai un errore di runtime.
Siccome la specifica del C non dice niente riguardo all'ordine di esecuzione può essere (ma non definito) che il compilatore valuti prima la funzione, allocando quindi la memoria per la struttura e poi richiamando il membro right, ed il questo caso non c'è errore di runtime, ma comunque il tuo codice rimane sbagliato.
ciao
sergio