@Nulltiton

Существует ли тип данных int?

В книге Брайана Кернигана и Денниса Ритчи "Язык программирования С" сказано: "К целым числам применимы модификаторы short и long: short int sb; long int counter; Слово int в таких объявлениях можно опустить, что обычно и делается. Целью введения этих модификаторов было разграничить длины двух типов целых чисел для практических потребностей. Обычно int имеет стандартную для той или иной системы длину. Так short часто имеет размер 16 бит, long - 32 бита, а int - или 16, или 32. Компилятору разрешено самостоятельно выбирать размер в соответствии с характеристиками аппаратуры и следующими ограничениями: числа типа short и int должны иметь длину не менее 16 бит, а long - не менее 32 бит; тип short должен быть не длиннее int, а int - не длиннее long".
Вопрос следующий - int реализован как тип данных, который имеет два модификатора или есть два типа данных (short и long) и при присваивании переменной типа int компилятор сам решает, будет ли это переменная short, либо long, а int, в таком случает является в некотором роде абстракцией?
  • Вопрос задан
  • 208 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Есть три типа данных - short int, int и long int.
Компилятор не решает, какого типа будет переменная. Программист должен объявить это явно.
Компилятор решает, какого размера будет переменная каждого типа.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg
Любые ответы на любые вопросы
Просто в целях экономии места на экране и трудозатрат на кнопкотык, некто придумал правило, делающиее такие вещи эквивалентными:

shot int a === short a
long int a === long a

При написании программ, для которых важно, сколько именно места занимает переменная, или сколько разрядов она предоставляет для вычислений, лучше не заниматься игрой "угадай размер типа по компилятору и модификатору", а просто использовать типы с фиксированными характеристиками:
  • int_least64_t
  • int_fast64_t
  • int64_t
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы