Non è che restituisce qualkosa...pero nell'ambito di un 'espressione
var1 = var2;
viene valutata come il valore che ha var1 dopo l'assegnamento, ad esempio:
la funzione m ritorna 2 che è il valore assegnato a var1codice:int m(){ int a = 0; int b = 2; return a = b; }
oppure
l'istruzione di stampa viene eseguita perche ad 'a' viene assegnato il valore 2 e l'assegnamento 'a = b' ritorna il valore della variabile assegnata.codice:int m(){ int a = 0; int b = 2; if(a = b) printf("ciao"); }