Sono confuso sul seguente codice:Perché il valore di i == 0 in questo codice C++?
#include <iostream>
int i = 1;
int main()
{
int i = i;
std::cout << "i: " << i << "\n";
return 0;
}
uscita:
i: 0
avevo previsto l'esecuzione del codice di cui sopra sarebbe stampare 1
. Qualcuno può spiegare la ragione di questo strano comportamento?
Quando succedono cose strane, di solito è UB. – Maroun
L'avviso "main.cpp: 13: 13: Variable 'i' non è inizializzato se usato all'interno della propria inizializzazione: dato da un compilatore ragionevole può essere un suggerimento sul problema, forse bloccando i livelli di avviso e ascoltando i loro consigli. – WhozCraig
Quando assegni int i = i ;, viene inizializzato con il valore di i che hai appena dichiarato, quindi un valore indefinito –