EDIT: To składniowo prawną, ale wyniki w niezdefiniowanej zachowań jeśli używasz x
.
To jest legalne, ponieważ przypisujesz niezainicjowaną zmienną do innej (dobrze, tej samej) niezainicjowanej zmiennej. To, że go kompiluje, nie oznacza, że jest legalne. Jest to poprawna składnia C++, tak, ale nie legalna.
Prawa strona operatora przypisania musi zostać w pełni oceniona w momencie przypisania. W tym przypadku jest to i
, który nie został zainicjowany.
kuponów do Steve Jessop, którzy odkopali Cytat:
4,1/1, konwersja lwartość-to-RValue
[...], jeśli obiekt jest niezainicjowany, program to wymaga tej konwersji ma niezdefiniowane zachowanie.
Dla mnie to nie jest nielegalne, to tylko nadużycie notacji. –
Wylicza jako (i) 'int i' (ii)' i = i' w tej kolejności –
Myślę, że z tego samego powodu, że po prostu 'int i;' bez przypisywania 'i' jest legalne. – asmeurer