Что такое квалификаторы в языке Си? - PullRequest
4 голосов
/ 24 февраля 2011

Я читаю текст по этому адресу:

https://cs.senecac.on.ca/~btp100/pages/content/varia_p.html

В разделе «Квалификаторы» говорится:

«Мы можем определить тип int, чтобы быть уверенным, что он содержит минимальное количество бит» .... Короткое замыкание содержит не менее 16 бит: ....

Я не понимаю этого, что означает «квалифицировать тип int» и почему «Короткое содержит не менее 16 бит».

Кто-нибудь может уточнить это, пожалуйста? Спасибо всем.

Ответы [ 6 ]

13 голосов
/ 12 июля 2012

Квалификатор - это дополнительное имя, присваиваемое либо переменным, либо функциям, показывающее дополнительное качество или дополнительное значение для этой переменной или функции. как доктор в докторе Арун Кумар

Квалификаторы для переменных (квалификаторы TYPE): signed, unsigned, long, short, long long, const, volatile, static, auto, extern, register

Квалификаторы для функций: static, extern, inline

5 голосов
/ 24 февраля 2011

ключевые слова short, long, unsigned, signed и т. Д. Называются квалификаторами.Порядок квалификаторов не имеет значения, например

short int signed x; // means signed short int x, at least 16 bits :)

В этой строке вы квалифицировали тип int с квалификаторами short и signed

2 голосов
/ 24 февраля 2011

Вы можете использовать Qualifiers, чтобы указать, какой размер числа вы хотите сохранить внутри вашего int. Думаю, что точный размер зависит от реализации C, но обычно это выглядит следующим образом.

short int a; // 16 bits, range -32,768 to 32,767

unsigned short int b; // 16 bits, range 0 to 65,535

unsigned int c; // 32 bits, range 0 to 4,294,967,295

int d; // 32 bits, range -2,147,483,648 to 2,147,483,647

long int d; // 32 bits, range -2,147,483,648 to 2,147,483,647 (minimum requirement, can be higher on 64bit systems)

1 голос
/ 24 февраля 2011

Некоторые ключевые слова изменяют поведение типа int.Они известны как квалификатор.Примеры включают в себя «short», «long», «unsigned», «const», «volatile».Поэтому, если мы квалифицируем «int» как «short», мы знаем, что переменная содержит не менее 16 битов:

short int var;
0 голосов
/ 17 февраля 2019

Только для пояснения по стандарту ISO C11

  • Спецификаторы класса хранения (6.7.1): typedef, extern, static, _Thread_local, auto, register.
  • Спецификаторы типа (6.7.2): void, char, short, int, long, float, double, signed, unsigned, _Bool, _Complex, атомарный тип-спецификатор _Atomic ( имя типа ), структура-или-объединение-спецификатор (struct и union), спецификатор перечисления (enum), typedef-name (typedef + что-то).
  • Спецификаторы типов (6.7.3): const, restrict, volatile,_Atomic.

Спецификатор типа _Atomic отличается от спецификатора типа _Atomic.

0 голосов
/ 24 февраля 2011

Логически целое число - это любое целое число от отрицательной бесконечности до положительной бесконечности.

Было бы неплохо в C / C ++ иметь возможность объявлять int и использовать его для хранения любого целого числа, но, к сожалению, должны быть ограничения на диапазон значений, которые можно хранить в типе данных int.

C / C ++ позволяет объявлять переменные типа short, int или long, которые могут хранить 2 ^ 16, 2 ^ 32 и 2 ^ 64 различных целых чисел соответственно.

Сказать, что тип int квалифицирован, то же самое, что сказать, что он ограничен для хранения меньшего подмножества целых чисел.

...