в .Net, целые числа являются знаками, что означает, что они хранятся в стеке. Целые классы также являются стандартными (обычно System.Int32). У них есть методы, такие как CompareTo, Equals, ... Таким образом, они должны принимать более четырех байтов в стеке. В приведенном ниже примере показывает, однако, что они занимают ровно 4 байта:.Net/C#: каков реальный размер целого числа?
unsafe static void Main()
{
int a = 2, b = 4;
Console.WriteLine("Adress of a : {0}", (int)&a);
Console.WriteLine("Adress of b : {0}", (int)&b);
Console.WriteLine("Size of integer: {0}", (int)(&a) - (int)(&b));
}
Выход:
Adress of a : 1372876
Adress of b : 1372872
Size of integer: 4
ли CLR сделать специальную обработку для целых и других (типов значений с плавающей точкой, длинный, двойной, .. .)?
Я думаю, что int32 - это структура, а не класс. – Shawn
Попробуйте запустить это на 64-битной ОС ... –
, даже тогда платформа сохраняет int как 4 байта. * native int * это другое дело. хотя плохой пример может закончиться с разным значением, я признаю – ShuggyCoUk