欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言中的共用体(union)和枚举(enum)

程序员文章站 2022-05-18 21:20:10
1 union union Data{ int i; char ch; float f; }a={1, 'a', 1.5}; //错误 union Data a = {16}; //正确 union Data a = {.ch = ‘j’}; //正确 在什么情况下使用共用体类型的数据?往往在数据处 ......

1 union

union data{

int i;

char ch;

float f;

}a={1, 'a', 1.5};  //错误

union data a = {16};  //正确

union data a = {.ch = ‘j’};  //正确

在什么情况下使用共用体类型的数据?往往在数据处理中,有时需要对同一段空间安排不同的用途,这时用共用体类型比较方便,能增加程序处理的灵活性。

例如,学生的数据包括:姓名、号码、性别、职业、班级

           教师的数据包括:姓名、号码、性别、职业、职务

要求用同一个表格来表示。

c语言核心代码

1 struct{
2     int num;          //成员 编号
3     char name[10];    //成员 姓名
4     char sex;         //成员 性别
5     union{            //声明无名共用体类型
6         int class;    //成员 班级
7         char position[10];//成员 职务
8     }category;
9 }person[2];

2 enum

一个变量只有几种可能的值,则可以定义为枚举(enumeration)类型。

enum weekday{sun=7, mon=1, tue, wed, thui, fri, sat} workday, weak_end;  {}内,tue为2,wed为3,thu为4……

enum weekday{sun, mon, tue, wed, thui, fri, sat} workday, weak_end;    {}内,sun=0, mon=1, tue为2,wed为3,thu为4……。

在枚举类型中,第一个枚举元素的值为0

enum escapes  //转移符

    bell      = '\a',
    backspace = '\b',
    htab      = '\t',
    return    = '\r',
    newline   = '\n', 
    vtab      = '\v',
    space     = ' '
};

 1 #include<stdio.h>
 2 
 3 
 4 
 5 enum
 6 
 7 { 
 8 
 9     bell          = '\a',
10 
11     backspace = '\b',
12 
13     htab         = '\t',
14 
15     return      = '\r',
16 
17     newline    = '\n', 
18 
19     vtab         = '\v',
20 
21     space       = ' '
22 
23 };
24 
25 
26 
27 enum boolean { false = 0, true } match_flag;
28 
29 
30 
31 void main()
32 
33 {
34 
35     int index = 0;
36 
37     int count_of_letter = 0;
38 
39     int count_of_space = 0;
40 
41 
42 
43     char str[] = "i'm ely efod";
44 
45 
46 
47     match_flag = false;
48 
49 
50 
51     for(; str[index] != '\0'; index++)
52 
53         if( space != str[index] )
54 
55             count_of_letter++;
56 
57         else
58 
59         {
60 
61             match_flag = (enum boolean) 1;
62 
63             count_of_space++;
64 
65         }
66 
67 
68     printf("%s %d times %c", match_flag ? "match" : "not match", count_of_space, newline);
69 
70     printf("count of letters: %d %c%c", count_of_letter, newline, return);
71 
72 }