Kalbant apie tai, kaip kintamasis saugomas RAM, koks skirtumas tarp „int? X = 0“ ir „int? X = null“?


Atsakymas 1:

Nuimamas tipas turės kažkokį papildomą lauką, nurodantį, ar reikšmė teisinga. Panašu, kad jūsų pavyzdys pateiktas C #. Tokiu atveju int? yra „System.Nullable “ santrumpa. „System.Nullable “ yra bendro tipo, apvyniojantis T papildomu bloko lauku „HasValue“. Šis papildomas bloko laukas bus saugomas atmintyje kartu su T. atmintimi. Pridėta niekinių reikšmių tipų C # sintaksė slepia pagrindinius lauką naudojančius veiksmus.

Konceptualiai kodas atrodo taip:

int? x = 0; // verčia į
x.Value = 0;
x.HasValue = teisinga;

int? x = nulis; // versti į
x.HasValue = klaidinga;

Esant bet kokiai situacijai, kai visi vertės tipo bitų modeliai yra teisingi, pvz., Sveikieji skaičiai, kalba turės pridėti kažkokį papildomą lauką ar indikatorių, kad būtų parodyta, ar yra teisinga reikšmė, ar kintamasis turėtų būti traktuojamas kaip nulis. Teoriškai, jei kompiliatorius žinotų, kad kai kurie bitų šablonai nėra tinkamos vertės, jis galėtų naudoti vieną iš netinkamų šablonų, kad nurodytų nulinę vertę, ir nenaudoti jokios papildomos atminties. Tačiau praktiškai tai greičiausiai bus neįmanoma, todėl jūs visada matysite, kaip naudojama tam tikra papildoma atminties dalis.

Nulinis strypas (sistema)


Atsakymas 2:

Tai visiškai priklauso nuo to, kaip įdiegiama programavimo kalba. Ta pati kalba gali būti įgyvendinta įvairiais būdais, priklausomai nuo aparatinės įrangos ir konkrečių kompiliatorių.

Beje, daugeliu kalbų kintamasis identifikuoja konkrečią atminties vietą, kurioje saugomi tikrieji duomenys. jei kintamasis turi vertę, net lygi nuliui, vieta bus nustatyta. Jei ji nebus įrašyta, pati vieta bus nustatyta kaip beprasmė vertė, lygi nuliui ar kitaip.


Atsakymas 3:

Tai visiškai priklauso nuo to, kaip įdiegiama programavimo kalba. Ta pati kalba gali būti įgyvendinta įvairiais būdais, priklausomai nuo aparatinės įrangos ir konkrečių kompiliatorių.

Beje, daugeliu kalbų kintamasis identifikuoja konkrečią atminties vietą, kurioje saugomi tikrieji duomenys. jei kintamasis turi vertę, net lygi nuliui, vieta bus nustatyta. Jei ji nebus įrašyta, pati vieta bus nustatyta kaip beprasmė vertė, lygi nuliui ar kitaip.


Atsakymas 4:

Tai visiškai priklauso nuo to, kaip įdiegiama programavimo kalba. Ta pati kalba gali būti įgyvendinta įvairiais būdais, priklausomai nuo aparatinės įrangos ir konkrečių kompiliatorių.

Beje, daugeliu kalbų kintamasis identifikuoja konkrečią atminties vietą, kurioje saugomi tikrieji duomenys. jei kintamasis turi vertę, net lygi nuliui, vieta bus nustatyta. Jei ji nebus įrašyta, pati vieta bus nustatyta kaip beprasmė vertė, lygi nuliui ar kitaip.


Atsakymas 5:

Tai visiškai priklauso nuo to, kaip įdiegiama programavimo kalba. Ta pati kalba gali būti įgyvendinta įvairiais būdais, priklausomai nuo aparatinės įrangos ir konkrečių kompiliatorių.

Beje, daugeliu kalbų kintamasis identifikuoja konkrečią atminties vietą, kurioje saugomi tikrieji duomenys. jei kintamasis turi vertę, net lygi nuliui, vieta bus nustatyta. Jei ji nebus įrašyta, pati vieta bus nustatyta kaip beprasmė vertė, lygi nuliui ar kitaip.