@Anton_repr

Всегда ли нужно использовать тип int?

Добрый день. Я изучаю язык С и сегодня узнал, что не всегда нужно использовать тип int. Допустим, если я использую маленькие числа в расчетах, то лучше использовать тип char, например. Стоит ли использовать такие типы или лучше просто int ?
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
BacCM
@BacCM
C++ почти с рождения
Всё зависит от целей. В подавляющем большинстве случаев можно использовать int и не беспокоиться о перерасходе памяти.
Задумывается стоит если таких переменных миллиарды или ресурсы очень ограничены.
Я бы скорее задумывался о возможности переполнения, не всегда результат операции с переменными конкретного типа в него помещается. Это важнее, чем мистическая экономия.
И еще важно чтобы типы в выражении соответствовали друг другу и ожиданию программиста.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
VoidVolker
@VoidVolker
У каждого типа данных есть свои особенности и ограничения. Например, у вас есть список из максимум пяти элементов, например пункты меню, и каждому из них нужен свой номер или идентификатор. Логичным будет выделить под это поле один байт, 0-255 — этого будет вполне достаточно. Или, например счетчик, который может быть только положительным — для него логично будет использовать беззнаковый тип. Опять же — многое зависит от того, что считать этим счетчиком. Пункты меню или записи в БД. Так что для каждой задачи следует выбирать оптимальное решение.
Ответ написан
GavriKos
@GavriKos
Какой вам нужно в конкретной ситуации в конкретной программе на конкретной платформе - такой и используйте.

Может вам надо экономить память (под какой нить микроконтроллер пишете) - тогда byte или еще что. Или у вас где то инты жестко требуются - зачем тогда char...
Ответ написан
@q27off
При арифметике с операндами в виде двух char'ов всегда выполняется целочисленное повышение до типа int. В этой связи, использовать int, как минимум, безопаснее.
Ответ написан
@ks0
если процессор 32-разрядный, и вся его математики с 32-разрядными числами, нафига ему ваши 8-разрядные char, компилятор из них так же сделает 32 разрядные, и хранить в памяти будет как 32 разрядные, заполняя остальные разряды нулями
он даже boolean 32-разрядыми будет делать

поэтому стоит использоваться тот тип, который родной для процессора

а вот для 8-разрядных микроконтроллеров, там да, там char родной, и если укладывается в него все что можно, то его и стоит использовать
и boolean там будет 8-разрядный
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы