Se ho questo codice:
avrò un undefined behavior?codice:int j; int j+=10;
Se ho questo codice:
avrò un undefined behavior?codice:int j; int j+=10;
Così avrai un errore ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Con un codice del genere rischi di trovarti un output strano durante alcune (rare) esecuzioni del programma.
A seconda dei flag che passi al compilatore puoi ricevere dei warning: warning: ‘j’ is used uninitialized in this function
Live fast. Troll hard.
Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
Team Lead @Gameloft Barcelona
Io penso che con quel codice avrà un errore del tipo
int j : redefinition
No MP tecnici (non rispondo nemmeno!), usa il forum.
Supponendo invece che la domanda fosse:
non si tratta di undefined behavior (=può succedere qualunque cosa), ma semplicemente il suo valore non è determinato:codice:int j; j+=10;
Quello che poi succede nella pratica è che in genere assumerà qualunque valore sia rimasto sullo stack nella locazione di memoria che gli viene assegnata (anche se alcuni compilatori nelle build di debug inizializzano automaticamente ogni stack frame ad un valore "strano", in modo che errori di questo genere saltino subito all'occhio anche quando non risulta possibile diagnosticare il problema al momento della compilazione)If an object that has automatic storage duration is not initialized explicitly, its value is indeterminate.
(C99, §6.7.8 ¶10)
Amaro C++, il gusto pieno dell'undefined behavior.