Ho appena incappato in un comportamento che mi ha sorpreso:Utilizzo della variabile appena dichiarata nell'inizializzazione (int x = x + 1)?
Quando si scrive:
int x = x+1;
in C/C++ - programma (o anche di più l'espressione che coinvolge il recente creazione x variabile complessa) la mia gcc/g ++ compila senza errori. Nel caso precedente X è 1 in seguito. Si noti che non vi è alcuna variabile x nell'ambito di una precedente dichiarazione.
Quindi mi piacerebbe sapere se questo è un comportamento corretto (e potrebbe anche essere utile in alcune situazioni) o solo una particolarità del parser con la mia versione gcc o gcc in generale.
BTW: La seguente non funziona:
int x++;
Credo x è sempre inizializzato a 0 da gcc, ma non si può fare affidamento su questo comportamento come la norma non chiede questo. Può succedere che in alcuni sistemi la spazzatura. – vidit
@EdHeal: No Non avevo abilitato gli avvisi e non --ansi, ma entrambi non cambiano la situazione (nessun avviso emesso) –
C'è un uso correlato, legale (ma inusuale): 'Node simpleGraph = Node (& simpleGraph) ; 'per creare un grafico con un nodo collegato ciclicamente a se stesso. O ancora più strano, 'int x = sizeof (x);'. – MSalters