C точно не определяет ширину каждого типа данных - PullRequest
0 голосов
/ 11 октября 2018

Согласно статье в Википедии C_data_types , есть одна часть, в которой упоминается, что любой тип данных может быть 64-битным:

Фактический размер целого числа типы варьируются в зависимости от реализации .Стандарт требует только соотношения размеров между типами данных и минимальные размеры для каждого типа данных:

Требования относительно отношения заключаются в том, что long long не меньше long,который не меньше чем int, который не меньше чем short.Поскольку размер символа всегда является минимально поддерживаемым типом данных, никакие другие типы данных (кроме битовых полей) не могут быть меньше.

Минимальный размер для символа равен 8 битам, минимальный размер для короткого и int составляет 16 битов.для long это 32 бита, а long long должно содержать как минимум 64 бита.

Тип int должен быть целочисленным типом, с которым целевой процессор работает наиболее эффективно. Это обеспечивает большую гибкость: например, все типы могут быть 64-битными.Тем не менее, несколько различных схем целочисленной ширины (модели данных) популярны.Поскольку модель данных определяет, как различные программы взаимодействуют, в интерфейсе приложения операционной системы используется единая модель данных. [8]

Тем не менее, я наблюдаю четкие размеры типов данных, когда якод на С на большинстве машин.Является ли эта статья просто утверждением, что существует единая модель данных (применяемая большинством операционных систем), которая обеспечивает размер типов данных для упрощения взаимодействия между программами / машинами?

1 Ответ

0 голосов
/ 11 октября 2018

Тем не менее, я наблюдаю четкие размеры типов данных, когда кодирую в C на большинстве машин.

Ширина типов фиксирована в любой конкретной реализации C.Статья в Википедии рассказывает, что они могут различаться в разных реализациях C.

Для этой цели реализация C - это та, которая предоставляется конкретным компилятором и связанными с ним инструментами (компоновщик, стандартная библиотека C) и настройками.использовал с этим.(Некоторые компиляторы имеют переключатели для выбора различной ширины для некоторых типов. Каждый выбор таких настроек технически является реализацией языка Си.)

Не существует единой модели данных.Есть очень распространенные модели.Операционные системы не могут принудительно устанавливать ширину типов (отчасти потому, что компьютеры являются практически универсальными машинами Тьюринга), за исключением того, что может быть неудобно общаться с операционной системой, если типы не совпадают.

...