Если это локальная переменная, это в основном не имеет значения (из моего опыта разные компиляторы с разными вариантами оптимизации (как правило, пренебрежимо) лучше с разными вариантами выбора).
Если он сохранен в другом месте (статическая память / куча), потому что у вас есть много этих сущностей, тогда, вероятно, лучшим выбором будет uint_least8_t
(как правило, гарантируется существование наименьшего и быстрого типа; точный типы ширины, как правило, нет).
unsigned char
также будет надежно предоставлять достаточно битов (UCHAR_MAX
гарантированно будет по крайней мере 255, и поскольку sizeof(unsigned char)
гарантированно будет 1 и sizeof(AnyType) >= 1
, не может быть никакого целочисленного типа без знака, который меньше).