Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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
- */
Advertisement
Add Comment
Please, Sign In to add comment