Vad gäller hur variabeln lagras i RAM, vad är skillnaden mellan "int? X = 0" och "int? X = null"?


Svar 1:

Den nullable typen har ett slags extra fält som indikerar om värdet är giltigt. Det ser ut som att ditt exempel är i C #. I det här fallet, int? är kortfattad för System.Nullable . System.Nullable är en generisk typ som lindar en T med ett extra boolfält, HasValue. Det extra boolfältet kommer att lagras i minnet tillsammans med lagring för T. Den tillagda syntaxen i C # för nollbara värdetyper döljer de underliggande åtgärderna som använder fältet.

Konceptuellt ser koden så här ut:

int? x = 0; // översätter till
x värde = 0;
x.HasValue = true;

int? x = noll; // Översätt till
x.HasValue = falsk;

I alla situationer där alla bitmönster av en värdetyp är giltiga, t.ex. heltal, måste språket lägga till något slags extrafält eller indikator för att visa om det finns ett giltigt värde eller om variabeln ska behandlas som null. I teorin, om kompilatorn visste att vissa bitmönster inte var giltiga värden, kunde den använda ett av ogiltiga mönster för att indikera ett nullvärde och inte använda någon extra lagring. I praktiken är det dock troligt att det är omöjligt så du kommer alltid att se något slags extra minne som används.

Nullable Struct (System)


Svar 2:

Det är helt beroende av hur programmeringsspråket implementeras. Samma språk kan implementeras på många olika sätt beroende på hårdvara och specifika kompilatorer.

Efter att ha sagt att variabeln på många språk identifierar en specifik minnesplats där faktiska data lagras. om variabeln har ett värde, till och med noll, kommer platsen att ställas in. Om det är noll kommer stället i sig att ställas in på ett meningslöst värde, noll eller på annat sätt.


Svar 3:

Det är helt beroende av hur programmeringsspråket implementeras. Samma språk kan implementeras på många olika sätt beroende på hårdvara och specifika kompilatorer.

Efter att ha sagt att variabeln på många språk identifierar en specifik minnesplats där faktiska data lagras. om variabeln har ett värde, till och med noll, kommer platsen att ställas in. Om det är noll kommer stället i sig att ställas in på ett meningslöst värde, noll eller på annat sätt.


Svar 4:

Det är helt beroende av hur programmeringsspråket implementeras. Samma språk kan implementeras på många olika sätt beroende på hårdvara och specifika kompilatorer.

Efter att ha sagt att variabeln på många språk identifierar en specifik minnesplats där faktiska data lagras. om variabeln har ett värde, till och med noll, kommer platsen att ställas in. Om det är noll kommer stället i sig att ställas in på ett meningslöst värde, noll eller på annat sätt.


Svar 5:

Det är helt beroende av hur programmeringsspråket implementeras. Samma språk kan implementeras på många olika sätt beroende på hårdvara och specifika kompilatorer.

Efter att ha sagt att variabeln på många språk identifierar en specifik minnesplats där faktiska data lagras. om variabeln har ett värde, till och med noll, kommer platsen att ställas in. Om det är noll kommer stället i sig att ställas in på ett meningslöst värde, noll eller på annat sätt.