Perché dichiarazione locale
char Var=Var;
destra verificarsi di Var
riferisce al locale Var
, non quella superiore. Come ha commentato Alk, questo è undefined behavior da assegnare da una variabile non inizializzata.
Quindi la vostra dichiarazione non inizializza Var
affatto, ovvero Var
contiene immondizia. Nel tuo caso particolare, quella spazzatura sembra essere 0.
BTW, con due omonimi Var
nella stessa funzione è davvero di cattivo gusto.
Come suggerisce this answer, dovresti compilare con gcc -Wall -Wshadow
quindi riceverai alcuni avvisi sul tuo codice. (Aggiungere anche -g
per ottenere le informazioni di debug per essere in grado di eseguire il debug con gdb
)
fonte
2014-04-09 05:52:41
'= Var' si riferisce già a' char Var'. – Pietu1998
Ora vorrebbe leggere questo: [Punto di dichiarazione in C++] (http://stackoverflow.com/questions/15746271/point-of-declaration-in-c#) ma è un collegamento C++ –
[Punto di dichiarazione ] (http://msdn.microsoft.com/en-us/library/179x7xb9.aspx) –