С точки зрения того, как переменная хранится в ОЗУ, в чем разница между «int? X = 0» и «int? X = null»?


Ответ 1:

Обнуляемый тип будет иметь какое-то дополнительное поле, которое указывает, является ли значение допустимым. Похоже, ваш пример в C #. В этом случае int? сокращение от System.Nullable . System.Nullable - это универсальный тип, который оборачивает T дополнительным полем bool, HasValue. Это дополнительное поле bool будет храниться в памяти вместе с хранилищем для T. Добавленный синтаксис в C # для типов значений Nullable скрывает основные действия, которые используют это поле.

Концептуально код выглядит так:

Int? х = 0; // переводит в
x.Value = 0;
x.HasValue = true;

Int? х = ноль; // перевести на
x.HasValue = false;

В любой ситуации, когда все битовые комбинации типа значения являются действительными, например, целые числа, язык должен будет добавить какое-то дополнительное поле или индикатор, чтобы показать, существует ли допустимое значение или переменная должна рассматриваться как нулевая. Теоретически, если компилятор знает, что некоторые битовые шаблоны не являются допустимыми значениями, он может использовать один из недопустимых шаблонов для указания нулевого значения и не использовать никакого дополнительного хранилища. Однако на практике это, вероятно, невозможно, поэтому вы всегда будете видеть какой-то дополнительный участок памяти, используемый.

Обнуляемая структура (система)


Ответ 2:

Это полностью зависит от того, как реализован язык программирования. Один и тот же язык может быть реализован многими различными способами в зависимости от оборудования и конкретных компиляторов.

Сказав, что во многих языках переменная идентифицирует определенную область памяти, где хранятся фактические данные. если переменная имеет значение, даже ноль, местоположение будет установлено. Если это значение равно нулю, для самого местоположения будет установлено бессмысленное значение, ноль или иное.


Ответ 3:

Это полностью зависит от того, как реализован язык программирования. Один и тот же язык может быть реализован многими различными способами в зависимости от оборудования и конкретных компиляторов.

Сказав, что во многих языках переменная идентифицирует определенную область памяти, где хранятся фактические данные. если переменная имеет значение, даже ноль, местоположение будет установлено. Если это значение равно нулю, для самого местоположения будет установлено бессмысленное значение, ноль или иное.


Ответ 4:

Это полностью зависит от того, как реализован язык программирования. Один и тот же язык может быть реализован многими различными способами в зависимости от оборудования и конкретных компиляторов.

Сказав, что во многих языках переменная идентифицирует определенную область памяти, где хранятся фактические данные. если переменная имеет значение, даже ноль, местоположение будет установлено. Если это значение равно нулю, для самого местоположения будет установлено бессмысленное значение, ноль или иное.


Ответ 5:

Это полностью зависит от того, как реализован язык программирования. Один и тот же язык может быть реализован многими различными способами в зависимости от оборудования и конкретных компиляторов.

Сказав, что во многих языках переменная идентифицирует определенную область памяти, где хранятся фактические данные. если переменная имеет значение, даже ноль, местоположение будет установлено. Если это значение равно нулю, для самого местоположения будет установлено бессмысленное значение, ноль или иное.