Ответ 1
Дифференциация двух (неопределенные значения и ловушечные представления) является фундаментальной. В одном случае вы не знаете значения. В другом случае вы имеете недопустимое значение.
Самый простой пример неопределенного значения, которое я могу собрать:
int a;
int b = a;
Не существует понятия детерминированного значения, связанного с a
. У этого есть что-то (поскольку оно занимает память), но "что" оно имеет, не определено, таким образом, неопределенно. В целом, концепция так же проста, как кажется: если не было решено, что-то есть, она не может быть использована в какой-либо оценке (подумайте, если это поможет) с детерминированными результатами.
Фактическое значение зависит от политик языка, компилятора и управления памятью. Например, в большинстве реализаций C неинициализированная переменная области или память, на которую указывает указатель, возвращаемый вызовом в malloc, будет содержать любое значение, которое ранее было сохранено на этом адресе. С другой стороны, большинство языков сценариев инициализируют переменные для некоторого значения по умолчанию (0, "" и т.д.).
Что касается представления Trap, это, по сути, любое значение, которое находится за пределами ограниченного домена допустимых значений, относящихся к базовому формальному определению. Далее следует, что не путать.
enum FooBar { foo=0, bar=1 };
enum FooBar fb = (enum FooBar)2;
В общем случае любой бит-шаблон попадает в пространство, разрешенное базовым представлением хранилища (в перечислениях, которое, вероятно, является int
), но НЕ считается действительным "значением" для ограниченного домена его формального определения. Описание выдающегося описания ловушек и их корней можно найти в этом ответе. Вышесказанное является просто представителем того, что может показаться очень простым недопустимым представлением. В действительности это практикуется в аппаратном обеспечении для обнаружения значений, которые вызывают недопустимое состояние. Я считаю их "паническими" значениями. Опять же, приведенный выше код является исключительно идеалистическим в демонстрации концепции "ценности", это не "действительно", но, по сути, известно.