Конкретный тип перечисления специфичен для реализации, но часто это int
. Так что да, в этом случае s
, вероятно, int
. Из C спецификации:
Каждый перечислимого типа, должны быть совместимы с char
, подписанную целого типа, или без знака целого типа. Выбор типа определяется реализацией, но должен быть способен представлять значения всех членов перечисления. Перечислимый тип является неполным до тех пор, пока не будет }
, который завершает список объявлений перечислителя.
Так что в вашем случае, 4, конечно, работать, так как она помещается в char
и в любом знаком или без знака целого типа на любой машине, я когда-либо слышал.
Соответствующий http://stackoverflow.com/questions/366017/what-is-the-size-of-an-enum-in-c – Bruce