Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    71

    [C++] Assegnazione di una valore ad una funzione

    Sul libro ho trovato questa espressione:

    codice:
    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?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    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 ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    71
    Si, so che è sbagliato quell'espressione condizionale, grazie per averlo puntualizzato.
    Grazie per aver chiarito il dubbio sull'assegnazione.

  4. #4
    Uhm, probabilmente la funzione doveva essere
    codice:
    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).
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.