#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main()
{
printf("val:\n");
enum val { first, second, third };
for( uint32_t i = first; i <= third; ++i)
{
printf("%d ",i);
}
printf("\nmonths:\n");
/* February = 2, March = 3, ... */
enum months { January = 1, February, March, April, May, June, July, August, September, October, November, December };
for( uint32_t i = January; i <= December; ++i)
{
printf("%d ",i);
}
printf("\nflags:\n");
enum flags {
FLAG_1 = 0x00000001,
FLAG_2 = 0x00000002,
FLAG_3 = 0x00000004,
FLAG_4 = 0x00000008,
FLAG_5 = 0x00000010,
FLAG_6 = 0x00000020,
FLAG_7 = 0x00000040,
FLAG_8 = 0x00000080,
FLAG_9 = 0x00000100,
FLAG_10 = 0x00000200,
FLAG_11 = 0x00000400,
FLAG_MAX = 0x00000800
};
for( uint32_t i = FLAG_1; i <= FLAG_MAX; i*=2)
{
printf("0x%X ",i);
}
printf("\n");
for( uint32_t i = FLAG_1; i <= FLAG_MAX; i=i<<1)
{
printf("0x%X ",i);
}
printf("\nflags again:\n");
enum flags_again {
FLAG_A_1 = 0x00000001,
FLAG_A_2 = 0x00000002,
FLAG_A_MAX = 0x00000800
};
for( uint32_t i = FLAG_A_1; i <= FLAG_A_MAX; i*=2)
{
printf("0x%X ",i);
}
printf("\n");
for( uint32_t i = FLAG_A_1; i <= FLAG_A_MAX; i*=2)
{
switch(i)
{
case FLAG_A_1:
case FLAG_A_2:
printf("0x%X ",i);
break;
default:
break;
}
}
printf("\nflags once more:\n");
enum flags_once_more {
FLAG_B_1 = 0x00000001,
FLAG_B_2 = 0x00000002,
FLAG_B_3 = 0x00000004,
FLAG_B_4 = 0x00000008,
FLAG_B_MAX = 0x7FFFFFFF
};
for( uint32_t i = FLAG_B_1; i <= FLAG_B_MAX; i=i<<1)
{
switch(i)
{
case FLAG_B_1:
printf("FLAG_B_1 ");
break;
case FLAG_B_2:
printf("FLAG_B_2 ");
break;
case FLAG_B_3:
printf("FLAG_B_3 ");
break;
case FLAG_B_4:
printf("FLAG_B_4 ");
break;
default:
printf("U ");
break;
}
}
printf("\n");
return 0;
}
/*
output:
val:
0 1 2
months:
1 2 3 4 5 6 7 8 9 10 11 12
flags:
0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 0x400 0x800
0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 0x400 0x800
flags again:
0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 0x400 0x800
0x1 0x2
flags once more:
FLAG_B_1 FLAG_B_2 FLAG_B_3 FLAG_B_4 U U U U U U U U U U U U U U U U U U U U U U U U U U U
*/
Comments