Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Valori di ritorno
Forum - C/C++ - Valori di ritorno

Avatar
Godrek (Normal User)
Pro


Messaggi: 74
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 6:32
Sabato, 15/06/2019
Salve,
poco fa mi sono imbattuto nel prototipo della funzione printf che ho sempre pensato fosse una procedura di tipo void.
Ho visto invece che per come è definita, essa restituisce un intero
(infatti il suo prototipo è:
int printf(const char *format, ...)
Come mai allora è possibile chiamarla, oltre che nel seguente modo:
int x;
x = printf(...)

Anche in:
printf(...)
ovvero senza assegnarla ad una variabile?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6196
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 7:52
Sabato, 15/06/2019
In C TUTTE le funzioni possono essere chiamate ignorando il valore restituito.

Ma tu hai studiato il C oppure no? Ti consiglio di aprire qualche pagina di un libro perché il linguaggio non si impara su un forum.

Ultima modifica effettuata da nessuno il 15/06/2019 alle 8:06


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à.
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 74
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 12:40
Sabato, 15/06/2019
Veramente questo concetto mi era stato spiegato all'università e non su un forum...
Comunque, che succede quando il return viene ignorato?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6196
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:52
Sabato, 15/06/2019
Testo quotato

Postato originariamente da Godrek:

Veramente questo concetto mi era stato spiegato all'università e non su un forum...



Quale concetto ti era stato spiegato all'università? Spero non in una facoltà di informatica altrimenti ti consiglio di cambiare università.

Testo quotato

Comunque, che succede quando il return viene ignorato?



Nulla

P.S. Ma che hai studiato nel corso universitario per Linux che dici di aver seguito? Era un corso sul C o su altro? Anche se per Linux, non cambia nulla sul linguaggio C e queste cose dovresti saperle.

Ultima modifica effettuata da nessuno il 15/06/2019 alle 13:22


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à.
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 74
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 13:46
Sabato, 15/06/2019
Si in informatica, anche se non programmando da un po al momento sono un po arrugginito.

Sapevo comunque che il return:
1 - passa il risultato dell'espressione
2 - termina la funzione

Quindi per poter chiamare una funzione che non fosse void pensavo ad una sintassi del tipo:
variabile = funzione(argomenti);
mentre per una funzione void:
funzione(argomenti);

In sostanza, la prima la pensavamo come una funzione e la seconda come procedura

Ultima modifica effettuata da Godrek il 15/06/2019 alle 13:52
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6196
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:52
Sabato, 15/06/2019
Ricordo tutto il thread sul return ... mi pare che sia chiaro cosa fa il return ma non c'entra nulla.

Il valore di ritorno (che esiste per tante funzioni come la printf ma anche la scanf ...) viene passato alla funzione CHIAMANTE e la funzione chiamante può tranquillamente IGNORARLO (ovvero scartarlo) oppure utilizzarlo (in una variabile o direttamente visualizzandolo).

Ma quello che ti voglio far NOTARE è che queste sono nozioni DI BASE del linguaggio C che non devi scoprire per caso o chiarirti su un forum, ma studiare su un libro del linguaggio ... essendo l'abc del linguaggio sono cose che si devono dare per scontate per chi programma con il C.

E' possibile che non utilizzi nessun libro per studiare?

Fra l'altro il C è un linguaggio molto molto semplice e vedo che frequenti questo forum con domande sul C da anni ...

Ultima modifica effettuata da nessuno il 15/06/2019 alle 13:54


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à.
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 74
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 14:06
Sabato, 15/06/2019
Si infatti ho ripreso le mie vecchie dispense però questa osservazione non viene fatta.
Comunque avevo anche un altra domanda (non so se devo aprire un nuovo topic).

Come mai:

int fd = open("./prova.txt", O_WRONLY | O_CREAT | O_TRUNC);

mi funziona (sia se il file esiste già, sia se deve crearlo) su Linux ma non su Mac?


Su Mac sono costretto a usare la fopen.



Ultima modifica effettuata da Godrek il 15/06/2019 alle 14:07
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6196
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:13
Sabato, 15/06/2019
Testo quotato

Postato originariamente da Godrek:

Si infatti ho ripreso le mie vecchie dispense però questa osservazione non viene fatta.



Non dispense. Forse non mi sono spiegato. Ti ho detto di studiare dai LIBRI. Un libro sul linguaggio C.
Se vuoi imparare.

Testo quotato

Comunque avevo anche un altra domanda (non so se devo aprire un nuovo topic).



Dovresti farlo perché devi dare spiegazioni e la risposta non è immediata.
Tanto per cominciare "non funziona su Mac" non ci dice nulla.
Viene compilato? Eseguito? Hai errori?


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à.
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 74
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 14:29
Sabato, 15/06/2019
Ok

Ultima modifica effettuata da Godrek il 15/06/2019 alle 14:31
PM Quote