Я могу использовать unsigned short для его хранения.
Да, вы можете использовать unsigned short (при условии (sizeof (unsigned short) * CHAR_BITS)> = 10)
Плюс в том, что он будет использовать меньше места для хранения значения.
Меньше чем? Меньше, чем int? Зависит от того, какой размер (int) в вашей системе?
Будет ли производительность снижаться?
Зависит. Предполагается, что тип int является наиболее эффективным целочисленным типом для вашей системы, поэтому использование short может повлиять на вашу производительность. Будет ли это зависеть от системы. Время и узнай.
Если я решил хранить данные как короткие, но все вызывающие функции используют int, то признается, что мне нужно преобразовывать эти типы данных при сохранении или извлечении значений.
Да. Но компилятор сделает преобразование автоматически. Однако нужно обратить внимание на преобразование между подписанным и неподписанным типами. Если значение не соответствует, точный результат может быть определен реализацией.
Будет ли производительность снижаться?
Может быть. если sizeof (unsigned int) == sizeof (unsigned short), то, вероятно, нет. Время и посмотри.
Будет ли значительная потеря производительности?
Время и посмотри.
Если я решил не использовать short, а просто 10 бит, упакованных в массив unsigned int. Что будет в этом случае по сравнению с предыдущими?
Время и посмотри.