PDA

Visualizza la versione completa : [C++] Assegnazione di una valore ad una funzione


Shiroga
17-01-2014, 10:02
Sul libro ho trovato questa espressione:



int& maxr(int& ra, int& rb)
{
(ra >= rb) ? return ra : return rb;
}

int main ()
{
int x, y;
cin >> x >> y;
maxr(x, y) = 0; // <- riga interessata

return 0;
}


Mi tutto chiaro, l'unico dubbio mi viene nel momento in cui alla funzione viene assegnato il valore 0.
Cosa significa, che la funzione al momento della chiamata ha prodotto una valore 0?

oregon
17-01-2014, 10:12
Per cominciare la linea contenuta nella maxr sbagliata.

L'assegnazione di 0 alla funzione non fa altro che forzare il valore restituito dalla funzione stessa ... non ha molto senso ...

Shiroga
17-01-2014, 10:48
Si, so che sbagliato quell'espressione condizionale, grazie per averlo puntualizzato.
Grazie per aver chiarito il dubbio sull'assegnazione.

MItaly
17-01-2014, 11:16
Uhm, probabilmente la funzione doveva essere


int& maxr(int& ra, int& rb)
{
return (ra >= rb) ?ra:rb;
}

int main ()
{
int x, y;
cin >> x >> y;
maxr(x, y) = 0; // <- riga interessata
cout << x << y;
return 0;
}

In tal caso, maxr restituisce un riferimento alla maggiore delle due variabili, che viene quindi posta a zero. Se aggiungi una cout dopo la maxr noterai che o x o y diventata 0 (a seconda del valore maggiore inserito).

Loading