enum
ввести подписанный или неподписанный? Со знаком из перечислений, отличаются по C/C99/ANSI C/C ++/C ++ x/GNU C/GNU C99?
Спасибо
Перечисление гарантированно будет представлено целым числом, но фактический тип (и его подпись) зависят от реализации.
Вы можете принудительно представить перечисление типом со знаком, задав одному из перечислителей отрицательное значение:
enum SignedEnum { a = -1 };
В C ++ 0x можно явно указать базовый тип перечисления:
enum ShortEnum : short { a };
(C ++ 0x также добавляет поддержку перечислений с ограниченной областью действия)
Для полноты я добавлю это в Язык программирования C, 2-е изд. , перечислители указаны как имеющие тип int
(стр. 215). K&R не является стандартом C, поэтому он не является нормой для компиляторов ISO C, но он предшествует стандарту ISO C, так что это, по крайней мере, интересно с исторической точки зрения.