Во время перехода от 16 до 32 бит в 80-х годах int
был либо 16, либо 32 бит. Используя текущую номенклатуру номенклатуры 64 бит, я понимаю, что было довольно распространенное распространение машин ILP32 и LP32. В то время я полагал, что было понятно, что int
всегда будет следовать за регистрами или шириной указателя для любой заданной архитектуры и что long
останется 32 бит.LP64, LLP64 и переход IL32
Быстрая перемотка вперед 25 лет, я вижу, что LP64 довольно распространен, но пока я не столкнулся с 64-битными платформами [мое открытие настольного Linux в 2007 году :)], я всегда ожидал, что IP64 станет следующим логическим шагом.
- Было ли это (LP64) ожидаемой эволюцией для 64-битных?
- Каким образом отношения
char <= short <= int <= long
вписываются в эту новую схему фиксации целочисленного типа на каждую платформу, которую мы оставляем? - Как эти схемы перехода относятся к использованию (на ваш выбор
{l,u}case
)WORD
/DWORD
на разных платформах? - Некоторые области Windows по-прежнему содержат
INT
формы, которые являются 16-битными. Будет ли Windows вырастать из LLP64 или уже слишком поздно? - Почему было
int
выбрано для того, чтобы быть оставленным позади этого времени, в отличие от во время 32-битного перехода?
- Каким образом отношения
Если вы исправили 'long' в 32 бит,' int' никогда не может расти, так как 'sizeof (int) <= sizeof (long) 'по определению. Поэтому IP64 никогда не рассматривался. –
Если это так, Бен Вейгт, пожалуйста, укажите ссылку на официальное определение для C для этого отношения? –
Мне кажется странным, что на этот вопрос есть только 2 ответа. –