искал что-то совершенно не связанное и наткнулся на это и должен был ответить.Да, это старо, поэтому для людей, которые занимаются серфингом позже ...
Честно говоря, я думаю, что все ответы здесь неполные.
Размер long - это размерколичество бит, которые ваш процессор может обрабатывать за один раз.Это также называется «словом».«Половина» - это короткое слово.«Двойное слово» является длинным длинным и в два раза длиннее длинного (и первоначально оно было реализовано только продавцами, а не стандартно), и даже больше, чем длинное длинное, представляет собой «четверное слово», которое в два раза больше длинного длинногоно у него не было формального имени (и не совсем стандартного).
Теперь, куда входит int?Частично регистрируется на вашем процессоре, а частично на вашей ОС.Ваши регистры определяют собственные размеры, которые обрабатывает процессор, которые, в свою очередь, определяют размер таких вещей, как короткие и длинные.Процессоры также разработаны с размером данных, который является наиболее эффективным размером для работы с ним.Это должно быть int.
На сегодняшних 64-битных машинах, как вы могли бы предположить, поскольку long - это слово, а слово на 64-битной машине - 64бит, long - 64-битное, а int - независимо от процессорапредназначен для обработки, но это не может быть.Зачем?Ваша ОС выбрала модель данных и определила эти размеры данных для вас (в значительной степени в зависимости от ее построения).В конечном счете, если вы работаете в Windows (и используете Win64), это 32 бита для long и int.Solaris и Linux используют разные определения (длина - 64 бита).Эти определения называются такими вещами, как ILP64, LP64 и LLP64.Windows использует LLP64, а Solaris и Linux используют LP64:
Model ILP64 LP64 LLP64
int 64 32 32
long 64 64 32
pointer 64 64 64
long long 64 64 64
Где, например, ILP означает int-long-pointer, а LLP означает long-long-pointer
Чтобы обойти это наиболееКомпиляторы, кажется, поддерживают установку размера целого числа напрямую с типами, такими как int32 или int64.