Статья Автор: Деникина Н.В., Деникин А.В.

Поведение, определяемое реализацией, и неопределенное поведение

Реализуемое поведение означает, что поведение некоторого синтаксиса остается на усмотрение реализации (компилятора). Такое поведение должно быть согласованным и документированным, но разные компиляторы могут выдавать разные результаты.

Давайте рассмотрим простой пример поведения, определяемого реализацией:


На большинстве платформ это приведет к появлению 4, но на других это может привести к появлению 2.
 

Неопределенное поведение почти идентично поведению, определяемому реализацией, в том смысле, что поведение остается на усмотрение реализации, но реализация не обязана документировать поведение.

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

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать