Advertisement
RicardasSim

enum

Mar 22nd, 2019
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.67 KB | None | 0 0
  1. //-std=c99 -Wall -Wextra -Wpedantic -Wshadow
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. /*
  7. void printIntBinLE(int val)
  8. {
  9.     int size = sizeof(val)*8;
  10.    
  11.     while(size--)
  12.     {
  13.         printf("%d", val >> size & 1 ? 1 : 0);
  14.     }
  15.  
  16. }
  17. */
  18.  
  19. void printBinaryLE(void* v, unsigned int s)
  20. {
  21.    
  22.     if(!v||s<1)
  23.     {
  24.         printf("error !\n");
  25.         return;
  26.     }
  27.    
  28.     unsigned char* pv = (unsigned char*) v;
  29.     unsigned int i;
  30.  
  31.     while(s--)
  32.     {
  33.         i=8;
  34.         while(i--)
  35.         {
  36.             printf("%d", pv[s] >> i & 1u ? 1 : 0);
  37.         }
  38.     }
  39.  
  40.     printf("\n");
  41. }
  42.  
  43. int main (int argc, char **argv){
  44.  
  45. printf("(1)\n----------\n");
  46.    
  47.     /* 0, 1 */
  48.     enum boolean { NO, YES };
  49.    
  50.    
  51.     printf("%d %d\n", YES, NO);
  52.    
  53.     printf("%s\n", YES ? "true" : "false");
  54.     printf("%s\n", NO ? "true" : "false");
  55.    
  56.    
  57.    
  58.    
  59. printf("\n(2)\n----------\n");
  60.    
  61.     /* February = 2, March = 3, ... */
  62.     enum months { January = 1, February, March, April, May, June, July, August, September, October, November, December };
  63.  
  64.     printf("%d\n",March);
  65.     printf("%d\n",September);
  66.    
  67.    
  68.     enum months month;
  69.     month = December;
  70.    
  71.     printf("%d\n",month);
  72.    
  73.    
  74.    
  75.     for( unsigned int i = January; i <= December; ++i)
  76.     {
  77.         printf("%d ",i);
  78.     }
  79.    
  80.    
  81. printf("\n\n(3)\n----------\n");
  82.    
  83.     enum flags {
  84.        
  85.         FLAG1   = 0x00000001,
  86.         FLAG2   = 0x00000002,
  87.         FLAG3   = 0x00000004,
  88.         FLAG4   = 0x00000008,
  89.         FLAG5   = 0x00000010,
  90.         FLAG6   = 0x00000020,
  91.         FLAG7   = 0x00000040,
  92.         FLAG8   = 0x00000080,
  93.         FLAG9   = 0x00000100,
  94.         FLAG10  = 0x00000200,
  95.         FLAG11  = 0x00000400,
  96.         FLAG12  = 0x00000800
  97.        
  98.     };
  99.    
  100.     unsigned int testFlagsA = FLAG1 | FLAG8;
  101.     unsigned int testFlagsB = FLAG1 | FLAG3;
  102.    
  103.     printf("DEC: %d HEX: %08X BIN: ", testFlagsA, testFlagsA);
  104.     printBinaryLE(&testFlagsA,sizeof(testFlagsA));
  105.     printf("DEC: %d HEX: %08X BIN: ", testFlagsB, testFlagsB);
  106.     printBinaryLE(&testFlagsB,sizeof(testFlagsB));
  107.    
  108.     printf("%s\n", testFlagsA & FLAG8 ? "true" : "false");
  109.     printf("%s\n", testFlagsB & FLAG8 ? "true" : "false");
  110.  
  111.  
  112. printf("\n(4)\n----------\n");
  113.    
  114.     typedef enum{
  115.         zero,
  116.         one,
  117.         two,
  118.         three,
  119.         four,
  120.         five,
  121.         six,
  122.         seven,
  123.         eight,
  124.         nine
  125.     }Numbers;
  126.  
  127.     Numbers num = four;
  128.    
  129.     printf("%d\n",num);
  130.    
  131.  
  132. printf("\n(5)\n----------\n");
  133.  
  134.     /*
  135.      
  136.     enum somename{
  137.         zero,
  138.         one,
  139.         two
  140.     };
  141.      
  142.     typedef enum somename somename; //identifier can be the same
  143.  
  144.     somename varA = one;
  145.     enum somename varB = three;
  146.      
  147.     */
  148.  
  149.     enum grt{
  150.        
  151.         Hey = 10,
  152.         Hi = 20,
  153.         Yo = 30
  154.        
  155.     };
  156.    
  157.     typedef enum grt geetings;
  158.    
  159.     geetings varA = Yo;
  160.    
  161.     printf("%d\n", varA);
  162.    
  163.    
  164. printf("\n(6)\n----------\n");
  165.  
  166.     /*
  167.  
  168.     enum eNam{
  169.         left,
  170.         right,
  171.         back,
  172.         forward
  173.     }eName,anotherName,onemoreName;
  174.      
  175.     */
  176.    
  177.     enum eNam{
  178.         left,
  179.         right,
  180.         back,
  181.         forward
  182.     }eName;
  183.    
  184.    
  185.     eName = forward;
  186.    
  187.     printf("%d\n\n", eName);
  188.    
  189. return 0;
  190. }
  191.  
  192. /*
  193. output:
  194.  
  195. (1)
  196. ----------
  197. 1 0
  198. true
  199. false
  200.  
  201. (2)
  202. ----------
  203. 3
  204. 9
  205. 12
  206. 1 2 3 4 5 6 7 8 9 10 11 12
  207.  
  208. (3)
  209. ----------
  210. DEC: 129 HEX: 00000081 BIN: 00000000000000000000000010000001
  211. DEC: 5 HEX: 00000005 BIN: 00000000000000000000000000000101
  212. true
  213. false
  214.  
  215. (4)
  216. ----------
  217. 4
  218.  
  219. (5)
  220. ----------
  221. 30
  222.  
  223. (6)
  224. ----------
  225. 3
  226.  
  227.  
  228. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement