Каковы длины распространенных типов данных? - PullRequest
2 голосов
/ 02 октября 2008

Сколько байтов будет содержать int и сколько будет содержать long?

Контекст:

  • C ++
  • 32-битный компьютер
  • Какая разница на 64-битном компьютере?

Ответы [ 8 ]

7 голосов
/ 02 октября 2008

это зависит от платформы и компилятора. делать sizeof (int) и sizeof (long) в c или c ++.

7 голосов
/ 02 октября 2008
5 голосов
/ 02 октября 2008

(я полагаю, вы говорите о C / C ++)

Это зависит от реализации, но это правило должно быть всегда действительным:

sizeof (короткий) <= sizeof (int) <= sizeof (длинный) </p>

2 голосов
/ 02 октября 2008

Как уже говорили другие, это зависит от того, какой компилятор вы используете (и даже от выбранных вами параметров компилятора).

Однако на практике с компиляторами для многих 32-битных машин вы найдете: -

  • символ: 8 бит
  • короткий: 16 бит
  • int: 32-битный
  • long: 32-bit
  • long long: 64-битный (если поддерживается)

Стандарт C в основном гласит, что long не может быть короче int , который не может быть короче short и т. Д. .

Для 64-битных процессоров они часто не меняются, но вы MUST остерегаетесь того, что указатели и целые числа часто имеют разный размер:

 sizeof(int) != sizeof(void*)
1 голос
/ 02 октября 2008

Я думаю, это зависит от используемого вами оборудования. на 32-битных платформах это обычно 4 байта для int и long. в C вы можете использовать оператор sizeof (), чтобы узнать.

int intBytes;
long longBytes;
intBytes= sizeof(int);
longBytes = sizeof(long);

Я не уверен, что long становится 8 байтов на 64-битных архитектурах или остается 4. 4. 1004 *

1 голос
/ 02 октября 2008

Зависит от компилятора.

В 32-битной системе int и long содержат 32 бита. В 16-битной системе int составляет 16 бит, а long - 32.

Есть и другие комбинации!

0 голосов
/ 02 октября 2008

Это сильно зависит от языка, который вы используете.

В C "int" всегда будет длиной слова процессора. Итак, 32 бита или 4 байта на 32-битной архитектуре.

0 голосов
/ 02 октября 2008

Это зависит от вашего компилятора. И ваш язык, в этом отношении. Попробуйте задать более конкретный вопрос.

...