Programma C++, domanda su variabile static

di Anonimizzato25711 il
2 risposte
Salve ragazzi, vi scrivo per chiedervi sicuramente una banalità. Ho studiato la funzione del qualificatore static in merito alla visibilità di una variabile. La prof ha aggiunto un esercizio esemplificativo su ciò, ma purtroppo non riesco a capire. So che una variabile dichiarata come static conserva il valore anche quando la funzione termina. La mia domanda è questa, guardando questo semplice codice:
#include <iostream>

using namespace std;

void sommatoria(int x) { 
    static int somma;
    if (x == 1)
        somma = 0;
    somma +=x;
    cout << "\nSomma uguale a : " << somma;
}

int main() { 
    int i,n;
    cout << "\nInserisci n : ";
    cin >> n;
    for (i = 1; i <= n; i++) { 
        cout << "\nSommatoria fino a " << i;
        sommatoria(i);
    }
}
Perchè se io non dichiaro all'inizio la variabile somma come static il mio programma non svolge la sommatoria in modo corretto?

Grazie mille per l'aiuto e scusate per la banale domanda.

2 Risposte

  • Proprio per quello che ti è stato spiegato su static. In caso contrario, ogni volta che si chiama la funzione, la variabile somma viene ricreata e il suo valore non è quello di prima.
  • Giusto, come pensavo era una domanda banale Grazie per l'aiuto!
Devi accedere o registrarti per scrivere nel forum
2 risposte