Sergomen
@Sergomen
Просто делай добро и оно вернётся

Есть ли смысл в уточнении типов данных чисел? И что это даст?

Я вот сегодня задумался над уточнением типов целых чисел в зависимости от того какой максимум может быть у переменной.

В смысле типо: если у меня есть массив размером 20, то, по моей задумке, нету смысла использовать обычный int в цикле, тк его граница намного больше и, по этой же за думке, лучше использовать unsigned short либо unsigned char тк их границы меньше чем int и занимают памяти меньше - вроде экономия.

Так вот, есть ли смысл вместо int использовать short или char там где числа точно не превысят их границы? И что это даст?

Например вместо:
int a[10] = {1,2,3,4,5,6,7,8,9,10};
for (int i = 0; i < 10; i++)
    cout << a[i] << endl;

сделать так:
short a[10] = {1,2,3,4,5,6,7,8,9,10};
for (unsigned char i = 0; i < 10; i++)
    cout << a[i] << endl;
  • Вопрос задан
  • 115 просмотров
Решения вопроса 3
@res2001
Developer, ex-admin
Смысл в этом есть. Будет меньше расходоваться память стека.
Но только в том случае, если вы программируете для системы с ограниченными ресурсами (какой-нибудь эмбедед и т.п.). Там подобная экономия может быть оправдана, да и то не всегда. В обычных приложениях для винды или линукса подобная экономия "на спичках" никакого эффекта не даст.
Ответ написан
@kamenyuga
Современные процессоры, в основном, 64-битные. Использование коротких числовых типов не даст выигрыша в скорости вычислений. В какой-то мере поможет сэкономить память и скорость выделения/очистки памяти - капля в море в таком цикле - не стоит того. Зато стоит использовать ++i, vector и индекс типа size_t - современный с++, новые стандарты, все дела.
Ответ написан
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Может в этом быть смысл, только если у вас большой длинный массив, и вы его тип уменьшаете. К скорости прибавки почти не будет - в основном из-за локальности данных только. Ну съедите поменьше памяти - это да.

Оптимизировать же переменные смысла нет никакого. Сэкономите пару байт буквально.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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