Вебинар: C# разработка и статический анализ: в чем практическая польза? - 18.11
Неопределённое поведение (англ. undefined behaviour) — свойство некоторых языков программирования (наиболее заметно в Cи и Си++) в определённых ситуациях выдавать результат, зависящий от реализации компилятора или заданных ключей оптимизации. Другими словами, спецификация не определяет поведение языка в любых возможных ситуациях, а говорит: "при условии А результат операции Б не определён". Допускать такую ситуацию в программе считается ошибкой, даже если на некотором компиляторе программа успешно выполняется. Такая программа не будет кроссплатформенной и может приводить к сбоям на другой машине, в другой ОС и даже на других настройках компилятора.
Неопределенное поведение не следует путать с неуточняемым поведением (unspecified behavior), при котором спецификация разрешает не любое поведение, а только ограниченный диапазон вариантов реализации.
Примеры ситуаций, приводящих к неопределённому поведению:
0