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