[RISOLTO] Compilazione programma in C

C, C++, Java, ...

[RISOLTO] Compilazione programma in C

Messaggioda lcproductions » 19/12/2016, 21:45

Salve.
Smanettando con il C , ho scoperto come "dare in pasto" al programma degli argomenti da riga di comando (sono ancora un principiante di questo linguaggio).
Così, ho creato questo semplice programma che calcola la sequenza di Fibonacci di un numero
Codice: Seleziona tutto
#include<stdio.h>

int fib(int num){
if (num == 1) {
  return 1;
}else if(num == 0){
    return 0;
} else {
  return num + fib(num-1);
}
}
void main(int argc, char **argv){
  int var;
  var = fib((int)argv[1]);
  printf("%d\n", var);
}

Tuttavia, quando vado a compilarlo ottengo questo errore
Codice: Seleziona tutto
$ gcc fib.c -o fib
fib.c: In function ‘main’:
fib.c:14:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
   var = fib((int)argv[1]);

Ho anche fatto una ricerca su Google, ma non me la cavo molto con l'inglese :P .
Grazie anticipatamente a chiunque risponderà.
Ultima modifica di lcproductions il 27/12/2016, 22:23, modificato 1 volta in totale.
Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 52
Iscritto il: 30/12/2015, 22:07

Re: Compilazione programma in C

Messaggioda jejenio » 19/12/2016, 23:25

Il warning, che non è un errore, significa che hai fatto un cast a 'int' di un puntatore (argv[]) ma il risultato di questa operazione ha una dimensione (in bytes) diversa dalla variabile dove vuoi memorizzare il risultato (num).
Però, anche risolvendo l'inconveniente il tuo programma non funzionerebbe.
Una ripassatina a int, char, char*, char** e stringhe in C ti aiuterebbe a capire cosa hai 'dato in pasto' al programma.

Buon divertimento :)
jejenio
Full Member
Full Member
 
Messaggi: 133
Iscritto il: 17/07/2005, 5:18

Re: Compilazione programma in C

Messaggioda lcproductions » 27/12/2016, 22:23

Grazie, ho risolto ;)
Spesso l'informatica è più un'arte che una scienza
lcproductions
Jr. Member
Jr. Member
 
Messaggi: 52
Iscritto il: 30/12/2015, 22:07

Re: [RISOLTO]Compilazione programma in C

Messaggioda jejenio » 29/12/2016, 14:47

Bene. 8-)

Per correttezza e a beneficio di futuri neofiti sarebbe auspicabile completare il thread con la versione funzionante del programma, non tanto per la funzione fib() ma per come hai fatto a passare l'argomento (confondere la conversione di tipo alias 'casting' con una conversione stringa->intero è un classico per chi arriva al C ma già conosce linguaggi con tipo/variabile a conversione automatica. Dal punto di vista didattico è un caso molto interessante).

Ciao
jejenio
Full Member
Full Member
 
Messaggi: 133
Iscritto il: 17/07/2005, 5:18


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti