Технически неправильно задан вопрос: «Стоит ли использовать short int
?».Единственный хороший ответ будет: «Я не знаю, чего вы пытаетесь достичь?».
Но давайте рассмотрим некоторые сценарии:
- Вы знаете определенный диапазон значений, который может принимать ваша переменная.
Диапазоны для целых чисел со знаком:
signed char
- -2⁷ - 2⁷-1 short
- -2¹⁵ - 2¹⁵-1 int
- -2¹⁵ - 2¹⁵-1 long
- -2³¹ - 2³¹-1 long long
- -2⁶³ - 2⁶³-1
Здесь следует отметить, что это гарантированные диапазоны, они могут быть больше в вашей конкретной реализации и часто таковы.Вам также гарантируется, что предыдущий диапазон не может быть больше, чем следующий, но они могут быть равны.
Вы быстро заметите, что short
и int
фактически имеют одинаковый гарантированный диапазон.Это дает вам очень мало стимулов для его использования.Единственная причина для использования short
в этой ситуации - дать подсказкам другим кодировщикам, что значения будут не слишком большими, но это можно сделать с помощью комментария.
Однако имеет смысл использоватьsigned char
, если вы знаете, что можете установить каждое потенциальное значение в диапазоне от -128 до 127.
Вы не знаете точный диапазон потенциальных значений.
В этом случае вы находитесь в довольно плохом положении, чтобы попытаться минимизировать использование памяти, и, вероятно, должны использовать по крайней мере int
,Хотя он имеет тот же минимальный диапазон, что и short
, на многих платформах он может быть больше, и это поможет вам.
Но большая проблема в том, что вы пытаетесь написать часть программного обеспечения, которое работаетна значения, диапазон которых вы не знаете.Возможно, что-то не так произошло до того, как вы начали кодировать (когда писались требования).
У вас есть представление о диапазоне, но вы понимаете, что он может измениться в будущем.
Спросите себя, насколько вы близки к границе.Если мы говорим о чем-то, что идет от -1000 до +1000 и может потенциально измениться на -1500 - 1500, тогда непременно используйте short
.Конкретная архитектура может дополнить вашу ценность, что означает, что вы не сэкономите место, но ничего не потеряете.Однако, если мы имеем дело с некоторым количеством, которое в настоящее время составляет -14000 - 14000, и может непредсказуемо расти (возможно, это некоторая финансовая ценность), то не просто переключитесь на int
, сразу переходите к long
.Вы потеряете часть памяти, но избавите себя от головной боли, ловя эти ошибки при переворачивании.