Runājot par to, kā mainīgais tiek glabāts RAM, kāda ir atšķirība starp "int? X = 0" un "int? X = null"?


Atbilde 1:

Neatņemamajam tipam būs sava veida papildu lauks, kas norāda, vai vērtība ir pareiza. Izskatās, ka jūsu piemērs ir C #. Šajā gadījumā int? ir saīsne System.Nullable . System.Nullable ir vispārējs tips, kas iesaiņo T ar papildu bloka lauku HasValue. Šis papildu rīka lauks tiks saglabāts atmiņā kopā ar T. krātuvi. Pievienotā sintakse C # attiecībā uz neatceļamiem vērtību tipiem slēpj pamatā esošās darbības, kuras izmanto lauku.

Konceptuāli kods izskatās šādi:

int? x = 0; // tulko uz
x.vērtība = 0;
x.HasValue = true;

int? x = nulle; // tulkot uz
x.HasValue = nepatiess;

Jebkurā situācijā, kad visi vērtības veida bitu modeļi ir derīgi, piemēram, veseli skaitļi, valodai būs jāpievieno kaut kāds papildu lauks vai indikators, lai parādītu, vai ir derīga vērtība vai ja mainīgais jāuztver kā nulle. Teorētiski, ja kompilators zinātu, ka daži bitu shēmas nav derīgas vērtības, tas varētu izmantot vienu no nederīgajiem šabloniem, lai norādītu nulles vērtību un neizmantotu papildu krātuvi. Tomēr praksē tas, visticamāk, nav iespējams, tāpēc jūs vienmēr redzēsit kādu papildu atmiņas daļu, kas tiek izmantota.

Nollable Struct (sistēma)


Atbilde 2:

Tas ir pilnībā atkarīgs no tā, kā tiek ieviesta programmēšanas valoda. Vienu un to pašu valodu var ieviest dažādos veidos atkarībā no aparatūras un konkrētām kompilatoriem.

To sakot, daudzās valodās mainīgais identificē noteiktu atmiņas vietu, kur tiek glabāti faktiskie dati. ja mainīgajam ir vērtība, pat nulle, tiks iestatīta atrašanās vieta. Ja tas ir nulle, pati atrašanās vieta tiks iestatīta uz bezjēdzīgu vērtību, nulli vai kā citādi.


Atbilde 3:

Tas ir pilnībā atkarīgs no tā, kā tiek ieviesta programmēšanas valoda. Vienu un to pašu valodu var ieviest dažādos veidos atkarībā no aparatūras un konkrētām kompilatoriem.

To sakot, daudzās valodās mainīgais identificē noteiktu atmiņas vietu, kur tiek glabāti faktiskie dati. ja mainīgajam ir vērtība, pat nulle, tiks iestatīta atrašanās vieta. Ja tas ir nulle, pati atrašanās vieta tiks iestatīta uz bezjēdzīgu vērtību, nulli vai kā citādi.


Atbilde 4:

Tas ir pilnībā atkarīgs no tā, kā tiek ieviesta programmēšanas valoda. Vienu un to pašu valodu var ieviest dažādos veidos atkarībā no aparatūras un konkrētām kompilatoriem.

To sakot, daudzās valodās mainīgais identificē noteiktu atmiņas vietu, kur tiek glabāti faktiskie dati. ja mainīgajam ir vērtība, pat nulle, tiks iestatīta atrašanās vieta. Ja tas ir nulle, pati atrašanās vieta tiks iestatīta uz bezjēdzīgu vērtību, nulli vai kā citādi.


Atbilde 5:

Tas ir pilnībā atkarīgs no tā, kā tiek ieviesta programmēšanas valoda. Vienu un to pašu valodu var ieviest dažādos veidos atkarībā no aparatūras un konkrētām kompilatoriem.

To sakot, daudzās valodās mainīgais identificē noteiktu atmiņas vietu, kur tiek glabāti faktiskie dati. ja mainīgajam ir vērtība, pat nulle, tiks iestatīta atrašanās vieta. Ja tas ir nulle, pati atrašanās vieta tiks iestatīta uz bezjēdzīgu vērtību, nulli vai kā citādi.