On Tue, Jul 12, 2011 at 1:29 AM, nicks <[email protected]> wrote:
>
> *PROBLEM 3>.*
> *
> *
> #include<stdio.h>
> main()
> {
> enum {low='a',high='b'}tag;
> char try=low;
> printf("Size=%d",sizeof(tag));
> switch (try)
> {
> case 'a':printf("aaa");break;
> case 'b':printf("bbb");
> case 'c':printf("ccc");
> }
> //system("pause");
> }
>
> in this program size of enum comes out to be 4..help me in understanding
> the size of enum...how it is stored in memory??...does the size of enum
> depend on number of constant in it ?....anyone link regarding that ??
>
>
What will be interesting to see here is:
printf
<http://www.opengroup.org/onlinepubs/009695399/functions/printf.html>("Size
= %d\n",sizeof(tag));printf
<http://www.opengroup.org/onlinepubs/009695399/functions/printf.html>("Size
= %d\n",sizeof(low));
We will get 4 and 4. 'tag' is the optional identifier, 'low' is an
enumerated type.
>From C99,
for tag: "The expression that defines the value of an enumeration constant
shall be an integer constant expression that has a value representable as an
int."
for low: "Each enumerated type shall be compatible with char, a signed
integer type, or an unsigned integer type. The choice of type is
implementation-defined, but shall be capable of representing the values of
all the members of the enumeration. The enumerated type is incomplete until
after the } that terminates the list of enumerator declarations."
PS: I didn't know the exact constraints too, thanks to nicks for bringing up
this question.
--
--
You received this message because you are subscribed to the Google Groups
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/algogeeks?hl=en.