Ecco: una volta che ho inizializzato una variabile, questa rimane statica e non si può inizializzare un'altra volta.
Perché, forse in genere le variabili si possono inizializzare più volte?
Vediamo...
#include "iostream" using namespace std; void main(){ for(int n=0;n<4;n++){ int variabile=0; variabile++; } }Questo codice non dà alcun messaggio di errore: mi è sembrato strano dal momento che una variabile viene dichiarata più volte nell'ambito di un loop.
Ecco la risposta: http://bytes.com/topic/c/answers/727941-redefinition-inside-loop
Ossia la variabile, dichiarata a ogni ciclo, cessa il suo scope con il terminare del singolo ciclo.
Infatti una volta terminato il loop il nome della variabile non viene riconosciuto e questo codice dà errore:
#include "iostream" using namespace std; void main(){ for(int n=0;n<4;n++){ int variabile=0; variabile++; } cout << variabile; }
1>------ Inizio compilazione: Progetto: test1, Configurazione: Debug Win32 ------
1> foglio.cpp
1>c:\users\antonello\documents\visual studio 2010\projects\test1\test1\foglio.cpp(10): error C2065: 'variabile': identificatore non dichiarato
========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========
Per ovviare, dichiaro una variabile prima:
#include "iostream" using namespace std; int numero; void main(){ for(int n=0;n<4;n++){ int variabile=0; variabile++; numero=variabile; } cout << numero; getchar(); }questo codice non mi dà errore.
E vediamone l'output:
1Adesso faccio il colpo da maestro, e dichiaro static questa variabile:
#include "iostream"
using namespace std;
int numero;
void main(){
for(int n=0;n<4;n++){
static int variabile=0;
variabile++;
numero=variabile;
}
cout << numero;
getchar();
}
4Ecco! A ogni ciclo la variabile viene reinizializzata riprendendo però l'ultimo valore che aveva.
Continua a non essere presente al di fuori del suo scope del singolo ciclo, infatti questo codice mi dà sempre errore di identificatore non dichiarato.
#include "iostream"
using namespace std;
int numero;
void main(){
for(int n=0;n<4;n++){
static int variabile=0;
variabile++;
numero=variabile;
}
cout << variabile;
getchar();
}
1>------ Inizio compilazione: Progetto: test1, Configurazione: Debug Win32 ------ 1> foglio.cpp 1>c:\users\antonello\documents\visual studio 2010\projects\test1\test1\foglio.cpp(11): error C2065: 'variabile': identificatore non dichiarato ========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========
Nessun commento:
Posta un commento