Информация об изменениях

Сообщение Re: размер встроенных типов зависит от платформы от 29.01.2022 6:29

Изменено 29.01.2022 6:37 Андрей Тарасевич

Re: размер встроенных типов зависит от платформы
Здравствуйте, maks1180, Вы писали:

M>Почему встроенные типы зависят от платформы ?


Так устроены языки С и С++.

Во-первых, изначальная идея заключалась в том, что тип `int` будет фокальной точкой системы целочисленных типов этих языков и его размер будет совпадать с размером наиболее эффективно поддерживаемого целочисленного типа данной платофрмы, т.е. фактически совпадать с размером слова данной платформы. Ясно, что размер слова может быть разным на разных платформах, что и подразумевает отличия в натуральных размерах типов.

Как вы все знаете, эта здравая идея потом разбилась о рифы глупой и ленивой идеи "бинарной совместимости", в результате чего тип `int` сегодня является 32-битным даже на платформах с 64-битным словом.

Во-вторых, идея заранее заданного фиксированного рзамера каждого типа нежизнеспособна уже потому, что не все платоформы поддерживают все размеры. Понимание этого факта и сегодня выливается в то, что библиотечные типы фиксированных размеров, вроде `int16_t`, являются лишь опционально поддерживаемыми.
Re: размер встроенных типов зависит от платформы
Здравствуйте, maks1180, Вы писали:

M>Почему встроенные типы зависят от платформы ?


Так устроены языки С и С++.

Во-первых, изначальная идея заключалась в том, что тип `int` будет фокальной точкой системы целочисленных типов этих языков и его размер будет совпадать с размером наиболее эффективно поддерживаемого целочисленного типа данной платофрмы, т.е. фактически совпадать с размером слова данной платформы. Ясно, что размер слова может быть разным на разных платформах, что и подразумевает отличия в натуральных размерах типов.

Как вы все знаете, эта здравая идея потом разбилась о рифы глупой и ленивой идеи "бинарной совместимости", в результате чего тип `int` сегодня является 32-битным даже на платформах с 64-битным словом.

Во-вторых, идея заранее заданного фиксированного рзамера каждого типа нежизнеспособна уже потому, что не все платформы поддерживают все размеры. Понимание этого факта и сегодня выливается в то, что библиотечные типы фиксированных размеров, вроде `int16_t`, являются лишь опционально поддерживаемыми.