Задать вопрос
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 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 3
@res2001
Developer, ex-admin
Смысл в этом есть. Будет меньше расходоваться память стека.
Но только в том случае, если вы программируете для системы с ограниченными ресурсами (какой-нибудь эмбедед и т.п.). Там подобная экономия может быть оправдана, да и то не всегда. В обычных приложениях для винды или линукса подобная экономия "на спичках" никакого эффекта не даст.
Ответ написан
@kamenyuga
Современные процессоры, в основном, 64-битные. Использование коротких числовых типов не даст выигрыша в скорости вычислений. В какой-то мере поможет сэкономить память и скорость выделения/очистки памяти - капля в море в таком цикле - не стоит того. Зато стоит использовать ++i, vector и индекс типа size_t - современный с++, новые стандарты, все дела.
Ответ написан
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Может в этом быть смысл, только если у вас большой длинный массив, и вы его тип уменьшаете. К скорости прибавки почти не будет - в основном из-за локальности данных только. Ну съедите поменьше памяти - это да.

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

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

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