Visualizzazione dei risultati da 1 a 4 su 4

Discussione: come mai è legale?

  1. #1

    come mai è legale?

    Salve gente tutto bene ?

    volevo chiedervi una cosa ....
    secondo voi come puo essere possibile che, ad una chiamata di una funzione (quindi abbiamo un valore di ritorno) si può anche non associare una variabile ?

    esempio:

    chiamo una funzione e salvo il valore di ritorno sulla variabile valoreDiRitorno:
    valoreDiRitorno = nomefunzione();

    fino a qui tutto chiaro ...
    ma secondo voi come mai e a che scopo, l'itruzione di seguito è legale?
    nomefunzione();

    Cioe ... se fosse una procedura ok... chiaro ... non ritorna indietro nulla ...
    ma una funzione che mi torna indietro un valore (immaginiamo un numero), com'è possibile che sia legale il fatto di non salvaro da nessuna parte ? il programma dovrebbbe chiedersi: ebbene adesso di questo 5 che ho ritornato che cosa me ne faccio ? è un po come inserire in un programma un numero senza assegnarlo ad una variabile ... che infatti è illegale.
    Ma in questo caso no a quanto pare ... è del tutto legale fare una cosa del genere ...
    ma perche? e a quale scopo ?

    adesso io ho usato l'esempio con un numero...
    ma in realta con qualsiasi tipo di valore questa cosa stranissima si puo fare
    ma perche?

    grazie

  2. #2
    Non capisco cosa ci vedi di così strano... può capitare che non ti importi del valore restituito, ma solo dei "side effects" della funzione.
    Ad esempio, prendi il metodo FileInputStream.Read: può benissimo essere che il numero di byte effettivamente letti non ti importi, dunque perché appesantire il codice aggiungendo una variabile inutile per memorizzare il valore restituito?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Originariamente inviato da MItaly
    Non capisco cosa ci vedi di così strano... può capitare che non ti importi del valore restituito, ma solo dei "side effects" della funzione.
    eh bhè ma allora userei una procedura che non mi torna indietro niente ... no ?
    e inoltre:
    se possiamo decidere di non farcene nulla del valore restituito ... perche utilizzare le procedure ? a quale scopo?
    potremmo utilizzare sempre le funzioni ed, eventualmente, decidere se tenerci o no il valore di ritorno ...

  4. #4
    Continuo a non capire il problema...
    Originariamente inviato da giovannifaraway
    eh bhè ma allora userei una procedura che non mi torna indietro niente ... no ?
    Perché fare una funzione che fa lo stesso lavoro con l'unica differenza di non restituire niente? Di nuovo, riprendi l'esempio della read che ti ho linkato prima: in alcune situazioni è utile sapere il numero di bytes effettivamente letti, in altre no; in questi ultimi casi, il valore restituito si può semplicemente ignorare.
    potremmo utilizzare sempre le funzioni ed, eventualmente, decidere se tenerci o no il valore di ritorno ...
    È esattamente quello che si fa... Se una funzione non ha senso che restituisca alcunché si mette come "finto tipo restituito" void, che indica che la funzione non restituisce niente; se invece una funzione restituisce qualcosa, puoi decidere di memorizzare il valore restituito oppure ignorarlo (non assegnandolo a niente).
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.