Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #150266
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: clarification about enums in C |
| Date | 2020-02-26 14:09 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <877e09zbha.fsf@bsb.me.uk> (permalink) |
| References | <aaf0f57f-4ae1-4c4a-a0aa-314eade48440@googlegroups.com> |
Thiago Adams <thiago.adams@gmail.com> writes:
> From the standard:
>
> "The identifiers in an enumerator list are declared as constants
> that have type int and may appear wherever such are permitted.127)"
Clear enough, yes?
> But there is a foot note:
It's just some more text. It's not a footnote.
> "Each enumerated type shall be compatible with char, a signed
> integer type, or an unsigned integer type. The choice of type
> is implementation-defined,128)"
So the type enum xxx is compatible with (almost the same as being the
same type as) one of the integer types no wider than int.
> "128) An implementation may delay the choice of which integer
> type until all enumeration constants have been seen."
This is so that it can decide how with the type needs to be.
> I am confused.
>
> enum E { A, B};
>
> Can A and B be int and E not int?
> Can A B and E be != int?
A and B are of type int. enum E is some type that might not be as wide
as int.
That's a bit like 'a' and 'b'. They look like characters but they are
constants of type int. char c = 'a'; is fine even when char is a type
narrow than int.
Consider this program:
#include <stdio.h>
int main(void)
{
enum E { A, B } e;
printf("sizeof A: %zu, sizeof e: %zu\n", sizeof A, sizeof e);
}
with some compilers (and some compiler options) it prints
$ ./e
sizeof A: 4, sizeof e: 1
and that's allowed.
--
Ben.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
clarification about enums in C Thiago Adams <thiago.adams@gmail.com> - 2020-02-25 15:38 -0800
Re: clarification about enums in C luser droog <luser.droog@gmail.com> - 2020-02-25 19:19 -0800
Re: clarification about enums in C James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-02-25 21:17 -0800
Re: clarification about enums in C Thiago Adams <thiago.adams@gmail.com> - 2020-02-27 04:01 -0800
Re: clarification about enums in C David Brown <david.brown@hesbynett.no> - 2020-02-26 11:29 +0100
Re: clarification about enums in C already5chosen@yahoo.com - 2020-02-26 14:05 -0800
Re: clarification about enums in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-02-26 23:03 +0000
Re: clarification about enums in C already5chosen@yahoo.com - 2020-02-26 23:29 -0800
Re: clarification about enums in C already5chosen@yahoo.com - 2020-02-27 01:42 -0800
Re: clarification about enums in C David Brown <david.brown@hesbynett.no> - 2020-02-27 11:02 +0100
Re: clarification about enums in C Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-02-27 06:37 -0800
Re: clarification about enums in C David Brown <david.brown@hesbynett.no> - 2020-02-27 16:18 +0100
Re: clarification about enums in C James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-02-27 23:24 -0500
Re: clarification about enums in C David Brown <david.brown@hesbynett.no> - 2020-02-27 09:50 +0100
Re: clarification about enums in C Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-02-27 06:33 -0800
Re: clarification about enums in C already5chosen@yahoo.com - 2020-02-27 06:53 -0800
Re: clarification about enums in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-02-27 15:05 +0000
Re: clarification about enums in C David Brown <david.brown@hesbynett.no> - 2020-02-27 16:24 +0100
Re: clarification about enums in C Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-02-28 01:27 -0800
Re: clarification about enums in C already5chosen@yahoo.com - 2020-02-27 01:29 -0800
Re: clarification about enums in C David Brown <david.brown@hesbynett.no> - 2020-02-27 11:12 +0100
Re: clarification about enums in C already5chosen@yahoo.com - 2020-02-27 03:09 -0800
Re: clarification about enums in C David Brown <david.brown@hesbynett.no> - 2020-02-27 14:33 +0100
Re: clarification about enums in C already5chosen@yahoo.com - 2020-02-27 05:44 -0800
Re: clarification about enums in C David Brown <david.brown@hesbynett.no> - 2020-02-27 14:57 +0100
Re: clarification about enums in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-02-27 11:53 +0000
Re: clarification about enums in C James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-02-27 23:52 -0500
Re: clarification about enums in C Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-02-28 01:30 -0800
Re: clarification about enums in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-02-26 14:09 +0000
Re: clarification about enums in C Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-02-26 09:47 -0800
Re: clarification about enums in C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-02-26 21:04 +0000
csiph-web