ci sono un paio di errori importanti nel tuo codice...
per prima cosa, argv è un vettore di stringhe, quindi ogni elemento è una stringa (vettore di caratteri, come preferisci). Se tu fai
addendo = (int) argv[i];
non vedo cosa possa saltare fuori, se non la conversione ad intero dell'indirizzo del primo carattere della stringa in esame, o qualcosa di altrettanto bruttoVVoVe:
![]()
per convertire da stringa a carattere devi usare la funzione atoi, credo sia dentro la stdlib.h
addendo = atoi (argv[i]);
e questo è il primo errore.
in secondo luogo, le variabili vanno sempre inizializzate prima di eseguirci qualche operazione. A meno che non le dichiari come statiche o globali, le variabili hanno, al momento della dichiarazione, un valore indefinito. Quindi quando dichiari la variabile somma devi inizializzarla ad un valore, in questo caso 0. Se avessi fatto la variabile prodotto, ovviamente l'avresti inizializzata a 1.
ecco il codice corretto, a me funge.
codice:// // somma di argomenti v0.1 // #include <stdio.h> #include <stdlib.h> main(int argc, char* argv[]) { /* dichiarazioni */ int i; int somma = 0; int addendo; /*corpo principale del programma */ for(i = 1; i < argc; i++) { printf("l'argomento %d e' %s\n",i,argv[i]); addendo = atoi (argv[i]); printf("eseguito il cast dalla stringa '%s' all'intero '%d'\n",argv[i],addendo); somma = somma + addendo; } printf("la somma di %d addendi risulta %d\n",(i - 1),somma); system ("pause"); return(0); }

VVoVe:
Rispondi quotando