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.