+1. Специально для локальных переменных в stdint.h имеются типы -
uint_fast8_t, uint_fast_16_t, uint_fast32_t ... Я ими пользуюсь и
для передачи параметров, и для возвратов, и для локальных
переменных, только названия сократил - ufast8_t, ufast16_t,
ufast32_t. Но - при их использовании надо быть внимательным и иметь в виду, что разрядность таких переменных может не совпадать с названием. Но это дело техники - нужный навык по контролю быстро вырабатывается.
А еще - не всегда это дает выигрышь. Например при выполнении умножений/делений желательно эти типы данных привести к реальному типу.