Разница между неопределённым поведением и неопределёнными значениями заключается в следующем:
- Неопределённое поведение — ситуация, когда в определённых маргинальных случаях поведение программного продукта или устройства может меняться неконтролируемым образом и приводить к некорректным результатам, но это не является ошибкой, и о такой возможности указано в спецификации. 3
- Неопределённые значения — это неопределённое или неизвестное состояние, которое само по себе не приводит к неопределённому поведению. 1 Например, если объявлять переменную в блоке без инициализации, начальное значение переменной будет неопределённым. 1
Таким образом, неопределённое поведение относится к ситуации, когда стандарт не определяет поведение в определённых ситуациях, а неопределённые значения — к неопределённому или неизвестному состоянию, которое само по себе не вызывает неопределённое поведение. 12