Is the enum type signed or unsigned? Does the signedness of enums differ between: C/C99/ANSI C/C++/C++x/GNU C/ GNU C99?
Thanks
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
An enum is guaranteed to be represented by an integer, but the actual type (and its signedness) is implementation-dependent.
You can force an enumeration to be represented by a signed type by giving one of the enumerators a negative value:
In C++0x, the underlying type of an enumeration can be explicitly specified:
(C++0x also adds support for scoped enumerations)
For completeness, I’ll add that in The C Programming Language, 2nd ed., enumerators are specified as having type
int(p. 215). K&R is not the C standard, so that’s not normative for ISO C compilers, but it does predate the ISO C standard, so it’s at least interesting from a historical standpoint.