В дополнение к ответу Карла он может быть даже совместим с подписанным или неподписанным типом, если что-либо из этого подходит лучше. Например его мог, но не должен в
enum small { m = -1; a = 127; };
enum big { b = 255; };
имеют small
в signed char
и big
в unsigned char
.
BTW константы m
, a
и b
не перечислимого типа, но всегда типа int
.
Редактировать: Я только что испытал с значениями, превышающими int
. В режиме C99 gcc
испускает ошибку (это правильно), но clang
только выдает предупреждение и имеет более широкий тип для представления enum
.