En termes de stockage de la variable dans la RAM, quelle est la différence entre "int? X = 0" et "int? X = null"?


Réponse 1:

Le type nullable aura une sorte de champ supplémentaire qui indique si la valeur est valide. Il semble que votre exemple soit en C #. Dans ce cas, int? est un raccourci pour System.Nullable . System.Nullable est un type générique qui enveloppe un T avec un champ booléen supplémentaire, HasValue. Ce champ booléen supplémentaire sera stocké en mémoire avec le stockage de T. La syntaxe ajoutée en C # pour les types de valeur nullable masque les actions sous-jacentes qui utilisent le champ.

Conceptuellement, le code ressemble à ceci:

int? x = 0; // Se traduit par
x.Value = 0;
x.HasValue = true;

int? x = null; // traduire en
x.HasValue = false;

Dans toutes les situations où tous les modèles de bits d'un type de valeur sont valides, par exemple des entiers, le langage devra ajouter une sorte de champ ou d'indicateur supplémentaire pour indiquer s'il existe une valeur valide ou si la variable doit être traitée comme nulle. En théorie, si le compilateur savait que certains modèles de bits n'étaient pas des valeurs valides, il pourrait utiliser l'un des modèles non valides pour indiquer une valeur nulle et ne pas utiliser de stockage supplémentaire. Dans la pratique, cependant, cela est probablement impossible, vous verrez donc toujours une sorte de mémoire supplémentaire utilisée.

Nullable Struct (système)


Réponse 2:

Cela dépend complètement de la façon dont le langage de programmation est implémenté. Le même langage peut être implémenté de différentes manières selon le matériel et les compilateurs spécifiques.

Cela dit, dans de nombreuses langues, la variable identifie un emplacement de mémoire spécifique où les données réelles sont stockées. si la variable a une valeur, même nulle, l'emplacement sera défini. S'il est nul, l'emplacement lui-même sera défini sur une valeur vide de sens, zéro ou autre.


Réponse 3:

Cela dépend complètement de la façon dont le langage de programmation est implémenté. Le même langage peut être implémenté de différentes manières selon le matériel et les compilateurs spécifiques.

Cela dit, dans de nombreuses langues, la variable identifie un emplacement de mémoire spécifique où les données réelles sont stockées. si la variable a une valeur, même nulle, l'emplacement sera défini. S'il est nul, l'emplacement lui-même sera défini sur une valeur vide de sens, zéro ou autre.


Réponse 4:

Cela dépend complètement de la façon dont le langage de programmation est implémenté. Le même langage peut être implémenté de différentes manières selon le matériel et les compilateurs spécifiques.

Cela dit, dans de nombreuses langues, la variable identifie un emplacement de mémoire spécifique où les données réelles sont stockées. si la variable a une valeur, même nulle, l'emplacement sera défini. S'il est nul, l'emplacement lui-même sera défini sur une valeur vide de sens, zéro ou autre.


Réponse 5:

Cela dépend complètement de la façon dont le langage de programmation est implémenté. Le même langage peut être implémenté de différentes manières selon le matériel et les compilateurs spécifiques.

Cela dit, dans de nombreuses langues, la variable identifie un emplacement de mémoire spécifique où les données réelles sont stockées. si la variable a une valeur, même nulle, l'emplacement sera défini. S'il est nul, l'emplacement lui-même sera défini sur une valeur vide de sens, zéro ou autre.