Godrek (Normal User)
Pro
Messaggi: 76
Iscritto: 04/08/2015
|
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?
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6404
Iscritto: 03/01/2010
|
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à. |
|
Godrek (Normal User)
Pro
Messaggi: 76
Iscritto: 04/08/2015
|
Veramente questo concetto mi era stato spiegato all'università e non su un forum... Comunque, che succede quando il return viene ignorato?
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6404
Iscritto: 03/01/2010
|
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à.
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à. |
|
Godrek (Normal User)
Pro
Messaggi: 76
Iscritto: 04/08/2015
|
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 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6404
Iscritto: 03/01/2010
|
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à. |
|
Godrek (Normal User)
Pro
Messaggi: 76
Iscritto: 04/08/2015
|
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 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6404
Iscritto: 03/01/2010
|
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.
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à. |
|
Godrek (Normal User)
Pro
Messaggi: 76
Iscritto: 04/08/2015
|
Ok
Ultima modifica effettuata da Godrek il 15/06/2019 alle 14:31 |
|