Разница между long и int в C #? - PullRequest
       10

Разница между long и int в C #?

39 голосов
/ 17 декабря 2009

Какая фактическая разница между long и int в C #? Я понимаю, что в C / C ++ long будет 64-битным на некоторых 64-битных платформах (конечно, в зависимости от ОС), но в C # все это выполняется во время выполнения .NET, так есть ли реальное различие?

Другой вопрос: может ли int удерживать long (путем приведения) без потери данных на всех платформах?

Ответы [ 6 ]

69 голосов
/ 17 декабря 2009

и int (иначе System.Int32 в среде выполнения) - это всегда 32-разрядное целое число со знаком на любой платформе, long (System.Int64) всегда 64-разрядное целое число со знаком на любой платформе. Таким образом, вы не можете разыгрывать long со значением выше Int32.MaxValue или ниже Int32.MinValue без потери данных.

19 голосов
/ 17 декабря 2009

int в C # => System.Int32 => от -2 147 483 648 до 2 147 483 647.

длиной в C # => System.Int64 => от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807

Если ваши длинные данные выходят за пределы диапазона int, и вы используете Convert.ToInt32, тогда будет выброшено OverflowException, если вы используете явное приведение, тогда результат будет неожиданным.

8 голосов
/ 17 декабря 2009

int - это 32 бита в .NET. long является 64-битным. Это гарантировано. Так что нет, int не может долго держаться без потери данных.

Существует тип, размер которого изменяется в зависимости от платформы, на которой вы работаете, а именно IntPtr (и UIntPtr). Это может быть 32 или 64 бита.

4 голосов
/ 17 декабря 2009

В C # int - это System.Int32, а long - это System.Int64; первый 32-разрядный, а затем 64-разрядный.

C ++ предоставляет лишь расплывчатые гарантии относительно размера int / long, для сравнения (вы можете узнать подробности о стандарте C ++),

4 голосов
/ 17 декабря 2009

Конечно, есть разница - в C # long - это 64-разрядное целое число со знаком, int - это 32-разрядное целое число со знаком, и так будет всегда.

Так что в C # long может содержать int, но int не может содержать long.

C / C ++, этот вопрос зависит от платформы.

0 голосов
/ 17 декабря 2009

Я думаю, что int - это 32-разрядное целое число, а long - это 64-разрядное целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...