使用枚举类型的变量

来源:互联网 发布:菁制美食淘宝店 编辑:程序博客网 时间:2024/05/21 17:44

使用枚举类型的变量


对枚举型的变量赋值


实例将枚举类型的赋值与基本数据类型的赋值进行了对比:

方法一:先声明变量,在对变量赋值

#include<</SPAN>stdio.h>




enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };



void main()


{

    int x, y, z;
   

     x = 10;


     y = 20;
   

     z = 30;
    
    


     enum DAY yesterday, today, tomorrow;
    


     yesterday = MON;


     today= TUE;

    tomorrow =WED ;

  printf("%d %d %d \n", yesterday, today, tomorrow);


}

方法二:声明变量的同时赋初值

#include <</SPAN>stdio.h>

enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };



void main()


{
    
    

int x=10, y=20, z=30;

    
   

enum DAY yesterday = MON, 
                      

today = TUE,
                  

tomorrow = WED;

  

printf("%d %d %d \n", yesterday, today, tomorrow);


}

方法三:定义类型的同时声明变量,然后对变量赋值。

#include <</SPAN>stdio.h>




enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN } yesterday, today, tomorrow;




int x, y, z;



void main()


{
    
   

  x = 10;  y = 20;  z = 30;
    
    
    

  yesterday = MON;
    

  today = TUE;
  

  tomorrow = WED;

  

  printf("%d %d %d \n", x, y, z); //输出:10 20 30
   

  printf("%d %d %d \n", yesterday, today, tomorrow); //输出:1 2 3


}

方法四:类型定义,变量声明,赋初值同时进行。

#include <</SPAN>stdio.h>




enum DAY

{
    

MON=1, 
    

TUE,
   

WED,
    

THU,
 

FRI,
   

SAT,
   

SUN 

}
 yesterday = MON, today = TUE, tomorrow = WED;




int x = 10, y = 20, z = 30;



void main()


{
    

printf("%d %d %d \n", x, y, z); //输出:10 20 30
    

printf("%d %d %d \n", yesterday, today, tomorrow); //输出:1 2 3

}


对枚举型的变量赋整数值时,需要进行类型转换


#include <</SPAN>stdio.h>



enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };



void main()


{


 enum DAY yesterday, today, tomorrow;

    

 yesterday = TUE;
    

 today = (enum DAY) (yesterday + 1); //类型转换
    

 tomorrow = (enum DAY) 30; //类型转换
  

   //tomorrow = 3; //错误

  

  printf("%d %d %d \n", yesterday, today, tomorrow); //输出:2 3 30


}


使用枚举型变量


#include<</SPAN>stdio.h>



 enum


{ 
   

BELL          = '\a',
  

BACKSPACE = '\b',
 

HTAB         = '\t',
  

RETURN     = '\r',
   

NEWLINE    = '\n', 
   

VTAB         = '\v',
  

SPACE       = ' '


};



 enum BOOLEAN { FALSE = 0, TRUE } match_flag;



void main()


{
   

int index = 0;
   

int count_of_letter = 0;
  

int count_of_space = 0;

  

char str[ ] = "I'm Ely efod";

 

match_flag = FALSE;

   

for(; str[index] != '\0'; index++)
      

   if( SPACE != str[index] )
         

      count_of_letter++;
       

  else
     {
       

    match_flag = (enum BOOLEAN) 1;
         

   count_of_space++;
      

   }
    
   

printf("%s %d times %c", match_flag ? "match" : "not match", count_of_space, NEWLINE);
   

printf("count of letters: %d %c%c", count_of_letter, NEWLINE, RETURN);

}

输出:

match 2 times

count of letters: 10


Press any key to continue


枚举类型与sizeof运算符


#include<</SPAN>stdio.h>



enum escapes


{ 
    

BELL      = '\a',
   

BACKSPACE = '\b',
   

HTAB      = '\t',
   

RETURN    = '\r',
    

NEWLINE   = '\n', 
    

VTAB      = '\v',
    

SPACE     = ' '


};



enum BOOLEAN { FALSE = 0, TRUE } match_flag;



void main()


{
    

printf("%d bytes \n", sizeof(enum escapes)); //4 bytes
    

printf("%d bytes \n", sizeof(escapes)); //4 bytes
 

   

printf("%d bytes \n", sizeof(enum BOOLEAN));  //4 bytes
   

printf("%d bytes \n", sizeof(BOOLEAN));  //4 bytes
    

printf("%d bytes \n", sizeof(match_flag));  //4 bytes
  

printf("%d bytes \n", sizeof(SPACE));  //4 bytes
  

printf("%d bytes \n", sizeof(NEWLINE));  //4 bytes
 

printf("%d bytes \n", sizeof(FALSE)); //4 bytes
   

printf("%d bytes \n", sizeof(0)); //4 bytes
 

}


综合举例


#include<</SPAN>stdio.h>



 enum Season    //注意这里如果放在下面,后面就不能直接那样声明


{
   

spring, summer=100, fall=96, winter


};



typedef enum


{
    

Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday


}
Weekday;



void main()


{
    
   

 printf("%d \n", spring); // 0
   

 printf("%d, %c \n", summer, summer); // 100, d
    

 printf("%d \n", fall+winter); // 193

    

 Season mySeason=winter;//就是这里,看上面的定义,也可以 enumSeason mySeason
    

 if(winter==mySeason)
       

  printf("mySeason is winter \n"); // mySeason is winter
    
   

  int x=100;
  

  if(x==summer)
    

 printf("x is equal to summer\n"); // x is equal to summer

   

 printf("%d bytes\n", sizeof(spring)); // 4 bytes

    
  

 printf("sizeof Weekday is: %d \n", sizeof(Weekday)); //sizeof Weekday is: 4

   

 Weekday today = Saturday;
  

 Weekday tomorrow;
  

 if(today == Monday)
        

   tomorrow = Tuesday;
  

 else
       

  tomorrow = (Weekday) (today + 1); //remember to convert from int to Weekday


}

1 0
原创粉丝点击