2013-05-29 5 views
2

До сих пор я думал, что если аргумент функции равен enum, тогда он может содержать только значения, определенные внутри enum. Но в моем случае это оказалось неправильным.Какова фактическая цель enum как аргумент функции?

Код:

typedef enum 
{ 
    a = 0, 
    b, 
    c 
} X; 

typedef enum 
{ 
    e = 3 
} Y; 

void fn (X var) 
{ 
    printf ("%d",var); 
} 

int main() 
{ 
    fn (e); 
    return 0; 
} 

Функция fn() приняла значение е и его выход был 3. Почему это происходит?

+1

Укажите язык, который вы используете, чтобы задать теги. Перечисления являются общими для многих языков, и соответствующий тег привлечет внимание экспертов на интересующем вас языке. И такой тег также добавит приятное форматирование в ваш код. – Artemix

ответ

3

Любое целочисленное значение может использоваться там, где требуется перечислить. Компилятор не проверяет целочисленные значения.

Это, в основном, удобный способ присвоения значимых имен тому, что в противном случае могло бы отображаться как произвольный номер в коде.

Смежные вопросы