На большинстве платформ это приведет к появлению
4
, но на других это может привести к появлению
2
.
Неопределенное поведение почти идентично поведению, определяемому реализацией, в том смысле, что поведение остается на усмотрение реализации, но реализация не обязана документировать поведение.
Как правило, мы хотим избегать поведения, определяемого реализацией и неопределенного, поскольку это означает, что наша программа может работать не так, как ожидается, если она скомпилирована на другом компиляторе (или даже на том же компиляторе, если мы изменим настройки проекта, которые влияют на поведение реализации!)
Лучшая практика
По возможности избегайте поведения, определяемого реализацией, и неопределенного, поскольку это может привести к сбоям в работе вашей программы в других реализациях.