2013-02-15 2 views
1

Я только что слышал, что размер int зависит от машины. Я всегда думал, что размер int составляет 32 бита. Может кто-нибудь объяснить эту загадку?Является ли int в C# 32 бит?

+1

'int' является синонимом для' System.Int32', который всегда ровно 32-бит. 'long' /' System.Int64' - это 64-разрядный целочисленный тип данных C#. – JosephHirn

ответ

14

В C# тип int всегда равен Int32 и всегда 32 бит.

Некоторые другие языки имеют разные правила, а int может быть зависимым от машины. В некоторых языках int определяется как имеющий минимальный размер, но конкретный размер машины/реализации, по крайней мере, такой большой. Например, в C++ тип данных int не обязательно 32 бит. От fundimental data types:

общая спецификация является то, что INT имеет естественный размер, предложенный архитектуры системы (один «слово») и четыре целочисленных типов обугливается, короткие, Int и долго должен каждый быть по крайней мере, большая как предшествующий ему, причем char всегда имеет один байт.

Однако .NET стандартизированы это, так что типы фактически определены как Int32, Int64 и т.д. В C#, int является псевдонимом для System.Int32, и всегда будет 32 бита. Это гарантируется разделом 4.1.5 Integral Types в Спецификация языка C#, в котором говорится:

Типа INT представляет подписало 32-разрядные целые числа со значениями между -2147483648 и 2147483647.

+1

, хотя если вы специально хотите использовать 64-битное целое число, вы можете использовать 'long' или' Int64' – DiskJunky

+1

@ DiskJunky Да, но это не 'int' :) –

+1

true, но было неявным в вопросе о том, что между 32 битных и 64-битных целых чисел, предположительно на 64-битных процессорах :-) Хотя, возможно, 16-разрядные процессоры тоже, если компилировать для устройства, но мы будем * путь * отключить тему на этом этапе. Игнорирование! :-) – DiskJunky

2

MSDN утверждает, что int 32 биты. Возможно ли, что человек говорит о C++?

В C++size of integral types in bytes is unspecified by the standard

+0

Это разные размеры в C++? –

+1

@SachinKainth Как вы можете видеть из ответа в моем редактировании, оно не указано –

1

int является псевдонимом System.Int32. Вы также можете использовать System.Int16, System.Int64 и BigInteger.

2

От C# Language Specifications:

Типа int представляет собой 32-разрядные целые числа со значениями между -2147483648 и 2147483647.

Смежные вопросы