Всегда ли нужно использовать тип int?
Всё зависит от целей. В подавляющем большинстве случаев можно использовать int и не беспокоиться о перерасходе памяти.
Задумывается стоит если таких переменных миллиарды или ресурсы очень ограничены.
Я бы скорее задумывался о возможности переполнения, не всегда результат операции с переменными конкретного типа в него помещается. Это важнее, чем мистическая экономия.
И еще важно чтобы типы в выражении соответствовали друг другу и ожиданию программиста.
Какой вам нужно в конкретной ситуации в конкретной программе на конкретной платформе - такой и используйте.
Может вам надо экономить память (под какой нить микроконтроллер пишете) - тогда byte или еще что. Или у вас где то инты жестко требуются - зачем тогда char...