У чым розніца паміж "int? X = 0" і "int? X = null", калі гаворка ідзе пра тое, як гэтая зменная захоўваецца ў аператыўнай памяці?


адказ 1:

Тып, які зводзіцца, утрымлівае дадатковае поле, якое паказвае, ці дакладнае значэнне. Падобна, ваш прыклад знаходзіцца ў C #. У гэтым выпадку, Int? з'яўляецца абрэвіятурай для System.Nullable . System.Nullable гэта агульны тып, які абгортвае Т з дадатковым полем стралы, HasValue. Гэтае дадатковае поле bool захоўваецца разам з памяццю для T у памяці. Сінтаксіс зменных тыпаў значэння, дададзены ў C #, хавае асноўныя дзеянні, якія выкарыстоўваюць поле.

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

Int? х = 0; // Перакладаецца ў x.Value = 0; x.HasValue = праўда; Int? х = нуль; // Перавесці на x.HasValue = false;

У любой сітуацыі, калі ўсе бітныя ўзоры значэння тыпу дзейнічаюць, напрыклад, Напрыклад, цэлыя лікі, мова павінна дадаць дадатковае поле або індыкатар, каб паказаць, ці ёсць дапушчальнае значэнне, ці варта змяняць тракту як нуль. Калі кампілятар тэарэтычна ведаў, што некаторыя біт-шаблоны не з'яўляюцца дапушчальнымі значэннямі, ён мог бы выкарыстаць адзін з недапушчальных шаблонаў для пазначэння нулявага значэння і не выкарыстоўваць дадатковую памяць. На практыцы, аднак, гэта, магчыма, немагчыма, таму заўсёды выкарыстоўваецца дадатковы блок памяці.

Змяненне канструкцыі (сістэма)


адказ 2:

Гэта цалкам залежыць ад таго, як рэалізуецца мова праграмавання. Адна і тая ж мова можа быць рэалізавана самымі рознымі спосабамі ў залежнасці ад абсталявання і канкрэтных кампілятараў.

Аднак у многіх мовах зменная ідэнтыфікуе пэўнае месца захоўвання, дзе захоўваюцца фактычныя дадзеныя. Калі пераменная мае значэнне, якое роўна нулю, вызначаецца становішча. Калі ён роўны нулю, само месца ўсталёўваецца ў бессэнсоўнае значэнне, роўнае нулю альбо іншым чынам.


адказ 3:

Гэта цалкам залежыць ад таго, як рэалізуецца мова праграмавання. Адна і тая ж мова можа быць рэалізавана самымі рознымі спосабамі ў залежнасці ад абсталявання і канкрэтных кампілятараў.

Аднак у многіх мовах зменная ідэнтыфікуе пэўнае месца захоўвання, дзе захоўваюцца фактычныя дадзеныя. Калі пераменная мае значэнне, якое роўна нулю, вызначаецца становішча. Калі ён роўны нулю, само месца ўсталёўваецца ў бессэнсоўнае значэнне, роўнае нулю альбо іншым чынам.


адказ 4:

Гэта цалкам залежыць ад таго, як рэалізуецца мова праграмавання. Адна і тая ж мова можа быць рэалізавана самымі рознымі спосабамі ў залежнасці ад абсталявання і канкрэтных кампілятараў.

Аднак у многіх мовах зменная ідэнтыфікуе пэўнае месца захоўвання, дзе захоўваюцца фактычныя дадзеныя. Калі пераменная мае значэнне, якое роўна нулю, вызначаецца становішча. Калі ён роўны нулю, само месца ўсталёўваецца ў бессэнсоўнае значэнне, роўнае нулю альбо іншым чынам.


адказ 5:

Гэта цалкам залежыць ад таго, як рэалізуецца мова праграмавання. Адна і тая ж мова можа быць рэалізавана самымі рознымі спосабамі ў залежнасці ад абсталявання і канкрэтных кампілятараў.

Аднак у многіх мовах зменная ідэнтыфікуе пэўнае месца захоўвання, дзе захоўваюцца фактычныя дадзеныя. Калі пераменная мае значэнне, якое роўна нулю, вызначаецца становішча. Калі ён роўны нулю, само месца ўсталёўваецца ў бессэнсоўнае значэнне, роўнае нулю альбо іншым чынам.