Oppure

Loading
19/01/17 10:01
Godrek
Salve a tutti, avevo da porvi una domanda sicuramente molto banale.
Durante l'esecuzione di una funzione (di tipo non-void), non appena viene letto il comando return "value";
viene terminata prima la funzione e poi restituito il valore rappresentato da "value" oppure viene prima restituito il valore e poi terminata la funzione?
aaa
19/01/17 10:36
nessuno
Che senso ha questa domanda?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
19/01/17 10:39
GN
Non so se ho capito bene quello che chiedi, ma io direi semplicemente che il return è l'ultima istruzione di una funzione che viene eseguita. Se c'è un "prima" e un "dopo" probabilmente dipende dal compilatore e/o dall'architettura del processore per cui viene compilato il codice.
Ad esempio nell'architettura MIPS la convenzione per ritornare un valore è metterlo in uno dei registri $v0 o $v1, una volta fatto questo per uscire dalla funzione si mette un'istruzione di salto per riportare il program counter all'indirizzo memorizzato dal chiamante per riprendere l'esecuzione da quel punto.
aaa
19/01/17 10:41
nessuno
In "ogni caso" il valore viene impostato prima del return (come potrebbe essere il contrario?).

Ma la questione è che non ha senso parlare di "restituzione" prima o dopo.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
19/01/17 10:42
Godrek
Il comando return ha due compiti:
- terminare l'esecuzione della funzione
- restituire un valore alla funzione chiamante

in che ordine esegue queste due operazioni?
aaa
19/01/17 10:43
Godrek
GN se è come hai detto tu quindi prima ritorna il valore e poi termina la funzione.
aaa
19/01/17 10:48
nessuno
Postato originariamente da Godrek:

Il comando return ha due compiti:
- terminare l'esecuzione della funzione
- restituire un valore alla funzione chiamante

in che ordine esegue queste due operazioni?



E' la spiegazione semplicistica di cosa fa il return in C.

Ma la "traduzione" in linguaggio macchina per la CPU, in genere, è

- copio il valore da restituire in un registro (in genere eax)
- esegue un ret per tornare all'indirizzo del codice chiamante

Capito?
Ultima modifica effettuata da nessuno 19/01/17 11:01
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
19/01/17 10:49
nessuno
Postato originariamente da Godrek:

GN se è come hai detto tu quindi prima ritorna il valore e poi termina la funzione.


Ancora ... !

Non significa nulla prima "ritorna un valore". Che vuol dire secondo te "ritorna un valore"??
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.