Vettore di int usato per sommare dà errore se non lo valorizzo prima

di Sabo il
3 risposte
Buona giornata e scusate per il titolo ma non sapevo come sintetizzare
Premetto che sono un principiante in C
Il mio problema è il seguente
Dichiaro un vettore di interi (int VotoCand[3])
Quindi aggiorno ognuno dei 3 elementi sommandogli un valore.
Ma questa cosa fa si che nei vari elementi la somma dia numeri assurdi.
Ho risolto mettendo a zero tutti gli elementi del vettore prima di usarlo, ma mi chiedevo se è normale il comportamento e se la mia soluzione è quella giusta.
Allego il semplicissimo codice di esempio

int main()
{
    int VotoCand[3];
    
    VotoCand[0] = VotoCand[0] + 10;
    VotoCand[1] = VotoCand[1] + 20;
    VotoCand[2] = VotoCand[2] + 30;
        
    printf("\nmostro VotoCand[0]: %d ",VotoCand[0]); // qui esce un numero a vanvera invece di 10
    printf("\nmostro VotoCand[1]: %d ",VotoCand[1]); // qui esce un numero a vanvera invece di 20
    printf("\nmostro VotoCand[2]: %d ",VotoCand[2]); // qui esce un numero a vanvera invece di 30

    return 0;
}

3 Risposte

  • Devi inizializzare a zero
    
    int VotoCand[3] = {0, 0, 0};
    
    Oppure
    
    int VotoCand[3] = {0};
    
    Altrimenti hanno un valore indefinito.

    Solo gli array globali (dichiarati fuori dalle funzioni) sono inizializzati a zero se non li inizializzi esplicitamente
  • Ok. Quindi vanno inzializzati come avevo capito...
    nel mio caso reale però, l'indice max è dato da un input richiesto all'utente che puo essere anche 100 ad esempio;
    quindi devo inizializzarli con un ciclo for. Inoltre non posso neanche usare questa forma
    int VotoCand[qntCand] = {0};
    perchè mi dà errore. Forse perche si puo usare solo con valori costanti
    int VotoCand[100] = {0}; // cosi lo accetta
    E' giusto cio che ho detto?
  • In quel caso devi usare il for, oppure memset(VotoCand,0,sizeof(VotoCand)); includendo string.h
Devi accedere o registrarti per scrivere nel forum
3 risposte