精华内容
下载资源
问答
  • C语言枚举和共用体

    2021-03-03 14:58:45
    C语言枚举和共用体 文章目录C语言枚举和共用体C enum(枚举)枚举变量的定义将整数转换为枚举C 共用体定义共用体访问共用体成员 C enum(枚举) 枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。 枚举...

    C语言枚举和共用体

    C enum(枚举)

    枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。

    枚举语法定义格式为:

    enum 枚举名 {枚举元素1,枚举元素2,……};
    

    接下来我们举个例子,比如:一星期有 7 天,如果不用枚举,我们需要使用 #define 来为每个整数定义一个别名:

    #define MON  1 
    #define TUE  2 
    #define WED  3 
    #define THU  4 
    #define FRI  5 
    #define SAT  6 
    #define SUN  7
    

    这个看起来代码量就比较多,接下来我们看看使用枚举的方式:

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

    这样看起来是不是更简洁了。

    **注意:**第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。

    可以在定义枚举类型时改变枚举元素的值:

     enum season {spring, summer=3, autumn, winter};
    

    没有指定值的枚举元素,其值为前一元素加 1。也就说 spring 的值为 0,summer 的值为 3,autumn 的值为 4,winter 的值为 5

    枚举变量的定义

    前面我们只是声明了枚举类型,接下来我们看看如何定义枚举变量。

    我们可以通过以下三种方式来定义枚举变量

    1、先定义枚举类型,再定义枚举变量

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

    2、定义枚举类型的同时定义枚举变量

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

    3、省略枚举名称,直接定义枚举变量

    enum
    {
          MON=1, TUE, WED, THU, FRI, SAT, SUN
    } day;
    
    #include <stdio.h>  
    enum DAY {      MON=1, TUE, WED, THU, FRI, SAT, SUN };  
    int main() 
    {    
    	enum DAY day;    
    	day = WED;    
    	printf("%d",day);    
    	return 0; 
    }
    

    以上实例输出结果为:

    3
    

    在C 语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理的,所以按照 C 语言规范是没有办法遍历枚举类型的。

    不过在一些特殊的情况下,枚举类型必须连续是可以实现有条件的遍历。

    以下实例使用 for 来遍历枚举的元素:

    #include <stdio.h>  
    enum DAY {      MON=1, TUE, WED, THU, FRI, SAT, SUN } day; 
    int main() 
    {    
    	// 遍历枚举元素    
    	for (day = MON; day <= SUN; day++) 
    	{       
    		printf("枚举元素:%d \n", day);    
    	} 
    }
    

    以上实例输出结果为:

    枚举元素:1 
    枚举元素:2 
    枚举元素:3 
    枚举元素:4 
    枚举元素:5 
    枚举元素:6 
    枚举元素:7
    

    以下枚举类型不连续,这种枚举无法遍历。

    enum
    {
        ENUM_0,
        ENUM_10 = 10,
        ENUM_11
    };
    

    枚举在 switch 中的使用:

    #include <stdio.h> 
    #include <stdlib.h> 
    int main() 
    {     
    	enum color { red=1, green, blue };     
    	enum  color favorite_color;     
    	/* 用户输入数字来选择颜色 */    
    	printf("请输入你喜欢的颜色: (1. red, 2. green, 3. blue): ");    
    	scanf("%u", &favorite_color);     
    	/* 输出结果 */    
    	switch (favorite_color)    
    	{    
    		case red:        
    			printf("你喜欢的颜色是红色");        
    			break;    
    		case green:        
    			printf("你喜欢的颜色是绿色");        
    			break;    
    		case blue:        
    			printf("你喜欢的颜色是蓝色");        
    			break;    
    		default:       
    			printf("你没有选择你喜欢的颜色");    
    	}     
    		return 0; 
    }
    

    以上实例输出结果为:

    请输入你喜欢的颜色: (1. red, 2. green, 3. blue): 1
    你喜欢的颜色是红色
    

    将整数转换为枚举

    以下实例将整数转换为枚举:

    #include <stdio.h> 
    #include <stdlib.h>  
    int main() 
    {     
    	enum day    {        saturday,        sunday,        monday,  			tuesday,        wednesday,        thursday,        friday    
    	}workday;     
    	int a = 1;    
    	enum day weekend;    
    	weekend = ( enum day ) a;  //类型转换    
    	//weekend = a; //错误    
    	printf("weekend:%d",weekend);    
    	return 0; 
    }
    

    以上实例输出结果为:

    weekend:1
    

    C 共用体

    共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。

    定义共用体

    为了定义共用体,您必须使用 union 语句,方式与定义结构类似。union 语句定义了一个新的数据类型,带有多个成员。union 语句的格式如下:

    union [union tag] {  
    	member definition;   
    	member definition;   
    	...   
    	member definition; 
    } [one or more union variables];
    

    union tag 是可选的,每个 member definition 是标准的变量定义,比如 int i; 或者 float f; 或者其他有效的变量定义。在共用体定义的末尾,最后一个分号之前,您可以指定一个或多个共用体变量,这是可选的。下面定义一个名为 Data 的共用体类型,有三个成员 i、f 和 str:

    union Data {   
    	int i;   
    	float f;   
    	char  
    	str[20]; 
    } data;
    

    现在,Data 类型的变量可以存储一个整数、一个浮点数,或者一个字符串。这意味着一个变量(相同的内存位置)可以存储多个多种类型的数据。您可以根据需要在一个共用体内使用任何内置的或者用户自定义的数据类型。

    共用体占用的内存应足够存储共用体中最大的成员。例如,在上面的实例中,Data 将占用 20 个字节的内存空间,因为在各个成员中,字符串所占用的空间是最大的。下面的实例将显示上面的共用体占用的总内存大小:

    #include <stdio.h>
    #include <string.h>  
    union Data {   
    	int i;   
    	float f;   
    	char  
    	str[20]; 
    };  
    int main( ) 
    {   
    	union Data data;            
    	printf( "Memory size occupied by data : %d\n", sizeof(data));    
    	return 0; 
    }
    

    当上面的代码被编译和执行时,它会产生下列结果:

    Memory size occupied by data : 20
    

    访问共用体成员

    为了访问共用体的成员,我们使用成员访问运算符(.)。成员访问运算符是共用体变量名称和我们要访问的共用体成员之间的一个句号。您可以使用 union 关键字来定义共用体类型的变量。下面的实例演示了共用体的用法:

    #include <stdio.h> 
    #include <string.h> 
    union Data {   
    	int i;   
    	float f;   
    	char  str[20]; 
    };  
    int main( ) 
    {   
    	union Data data;            
    	data.i = 10;   
    	data.f = 220.5;   
    	strcpy( data.str, "C Programming");    
    	printf( "data.i : %d\n", data.i);   
    	printf( "data.f : %f\n", data.f);   
    	printf( "data.str : %s\n", data.str);    
    	return 0; 
    }
    

    当上面的代码被编译和执行时,它会产生下列结果:

    data.i : 1917853763
    data.f : 4122360580327794860452759994368.000000
    data.str : C Programming
    

    在这里,我们可以看到共用体的 if 成员的值有损坏,因为最后赋给变量的值占用了内存位置,这也是 str 成员能够完好输出的原因。现在让我们再来看一个相同的实例,这次我们在同一时间只使用一个变量,这也演示了使用共用体的主要目的:

    #include <stdio.h> 
    #include <string.h>  
    union Data {   
    	int i;   
    	float f;   
    	char  str[20]; 
    };  
    int main( ) 
    {   
    	union Data data;            
    	data.i = 10;   
    	printf( "data.i : %d\n", data.i);      
    	data.f = 220.5;   
    	printf( "data.f : %f\n", data.f);      
    	strcpy( data.str, "C Programming");   
    	printf( "data.str : %s\n", data.str);    
    	return 0; 
    }
    

    当上面的代码被编译和执行时,它会产生下列结果:

    data.i : 10
    data.f : 220.500000
    data.str : C Programming
    

    在这里,所有的成员都能完好输出,因为同一时间只用到一个成员。

    展开全文
  • 枚举类型 C语言或C++的一种构造类型,它用于声明一组命名的常数。(1)枚举的声明:枚举声明用于声明新的枚举类型。访问修辞符 enum 枚举名:基础类型{枚举成员} ;基础类型必须能够表示该枚举中定义的所有枚举数值。...

    枚举类型  C语言或C++的一种构造类型,它用于声明一组命名的常数。

    (1)枚举的声明:枚举声明用于声明新的枚举类型。

    访问修辞符 enum 枚举名:基础类型

    {

    枚举成员

    } ;

    基础类型必须能够表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。

    (2)枚举成员

    枚举成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。

    示例:

    public enum TimeofDay:uint

    {

    Morning=-3,

    Afternoon=-2,

    Evening=-1

    } ;

    产生编译时错误,原因是常数值 -1、-2 和 –3 不在基础整型 uint 的范围内。

    (3)枚举成员默认值

    在枚举类型中声明的第一个枚举成员它的默值为零。

    以后的枚举成员值是将前一个枚举成员(按照文本顺序)的值加 1 得到的。这样增加后的值必须在该基础类型可表示的值的范围内;否则,会出现编译时错误。

    示例:

    public enum TimeofDay:uint

    {

    Morning,

    Afternoon,

    Evening

    } ;

    Morning的值为0,Afternoon的值为1,Evening的值为2。

    (4)为枚举成员显示赋值

    允许多个枚举成员有相同的值.

    没有显示赋值的枚举成员的值,总是前一个枚举成员的值+1.

    示例

    public enum Number

    {

    a=1,

    b,

    c=1,

    d

    } ;

    b的值为2,d的值为2.

    注意:以上枚举值都不能超过它的基础类型范围。否则会报错.

    (5)枚举类型与基础类型的转换

    基础类型不能隐式转换为枚举类型

    枚举类型也不能隐式转换为基础类型

    示例:

    public enum Number

    {

    a,

    b,

    c,

    d

    } ;

    class Test

    {

    public static void Main()

    {

    int i=Number.a;//错误,要强制类型转换(int)Number.a

    Number n;

    n=2 //错误,要强制类型转换(Number)2

    }

    }

    (6)System.Enum类型

    System.Enum 类型是所有枚举类型的抽象基类,并且从 System.Enum 继承的成员在任何枚举类型中都可用。

    System.Enum 本身不是枚举类型。相反,它是一个类类型,所有枚举类型都是从它派生的。

    System.Enum 从类型 System.ValueType派生

    (7)使用枚举类型

    using System;

    public enum TimeofDay

    {

    Morning,

    Afternoon,

    Evening

    } ;

    class Test

    {

    static void WriteGreeting(TimeofDay timeofDay)

    {

    switch(timeofDay)

    {

    case TimeofDay.Morning:

    Console.WriteLine("good morning");

    break;

    case TimeofDay.Afternoon:

    Console.WriteLine("good afternoon");

    break;

    case TimeofDay.Evening:

    Console.WriteLine("good evening");

    break;

    }

    }

    static void Main()

    {

    WriteGreeting(TimeofDay.Morning);

    WriteGreeting(TimeofDay.Evening);

    WriteGreeting(TimeofDay.Afternoon);

    }

    }

    展开全文
  • C语言 枚举

    2021-09-14 19:44:38
    enum枚举类型的名字 {名字0,名字1,名字2......,名字n} //常量符号,类型int,值从0到n enum color {red=1,blue,green=5,yellow} //blue值为2 green值为5 yellow值为6 2,使用 (1)函数中 enum color {red...

    1,定义

    用户定义的数据类型

    enum 枚举类型的名字 {名字0,名字1,名字2......,名字n}

    //常量符号,类型int,值从0到n

    enum color {red=1,blue,green=5,yellow}

    //blue值为2  green值为5   yellow值为6

     2,使用

    (1)函数中

    enum color {red,blue,yellow}

    void f(enum color c)

    (2)定义类型

    enum color t=red 

    枚举可以像int 一样输入/出

    #include <stdio.h>
    enum color {red,blue,yellow};
    int main(){
    	enum color a=red;
    	printf("该之前red = %d\n",a);
    	scanf("%d",&a);
    	printf("该之后red = %d",a);
    
        return 0;
    }
    
    该之前red = 0
    2
    该之后red = 2

    3,小套路

    自动计数的枚举

    当我们定义枚举时,比原来再多定义一个量

    enum color {red,yellow,blue,number}  //这个number(3)表示数量

    展开全文
  • 关于c语言枚举用法

    2021-05-20 18:39:33
    #includeenum{BELL='\a',BACKSPACE='\b',HTAB='\t',RETURN='\r',NEWLINE='\n',VTAB='\v',SPACE=''};enumBOOLEAN{FALSE=0,TRUE}match_flag;voidmain...

    #include

    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);

    }

    展开全文
  • c语言枚举类型enum用法及应用

    千次阅读 多人点赞 2021-07-14 10:36:26
    让我惊奇的是市面上的一些C语言书籍以及视频课程并没有重视去讲enum。 今天我们还是从理论到实际产品应用,教大家真正掌握enum。 通过这篇内容你能掌握以下知识: 掌握枚举的相关概念 掌握枚举的几种用法 掌握...
  • C语言枚举类型的定义

    2021-05-18 12:14:13
    枚举类型定义用关键字enum标识,形式为:enum标识符{枚举数据表};标识符用来区分不同的枚举类型,定义的枚举类型用“enum标识符”标识。枚举数据(枚举常量)是一些特定的标识符,标识符代表什么含义,完全由程序员...
  • C语言枚举(enum)

    2021-03-22 09:22:58
    1、enum关键字enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组数据的集合,枚举型是预处理指令#define的替代,枚举和宏定义其实非常类似,宏在预处理阶段将名字替换成对应的值,枚举在...
  • c语言枚举类型

    2021-05-22 06:24:30
    注:以下全部代码的执行环境为VC++ 6.0在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是:#defineMON 1#define TUE2#define WED3...这种新的数据类型叫枚举...
  • 记录一下这几天学到的C语言知识
  • 使用enum进行定义/*枚举类型演示*/#include int main() {enum /*季节*/ {CHUN, XIA = 5, QIU, DONG};printf("QIU是%d\n", QIU);}使用union联合进行定义/*联合演示*/#include typedef union{int val;float fval1;} ...
  • 它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型,下面我们一起来看几个C语言枚举类型学习例子.介绍枚举可以根据Integer、Long、Short或Byte中的任意一种数据类型来创建一种新型...
  • 经济学家说过,路边是不会有100元的,但是如果有,你还是要捡起来。...比如笔者今天写的这一篇:)一今天这篇文章要分享两个案例,第一个案例关于枚举,第二个案例也是关于枚举。照旧例,先来几句简单的照本...
  • [编程] C语言枚举类型(Enum) C语言枚举类型(Enum):定义形式为:enum typeName{ valueName1, valueName2, valueName3, ...... };enum 类型名{名字1,名字2} 枚举 ... 【转】java枚举类型enum的使用 原文网址:...
  • c语言枚举

    2021-01-12 23:48:02
    下一篇:c语言结构类型、typedef和联合体 常量符号化 用符号而不是具体的数字来表示程序中的数字 例如: 0代表红色 const int red=0; 1代表黄色 const int yellow=1; 2代表绿色 const int green=2; 现在...
  • C语言中使用用户建立数据类型时会接触结构体、共用体、枚举类型等,这些常见的类型在程序设计中实现功能常常会有很大的好处,也更能体现开发人员的专业性,也能使程序结构清晰,严谨。下面就以在嵌入式软件设计为例...
  • c语言枚举详解

    2021-05-19 20:23:28
    下面简单介绍下C语言中的枚举类型和在Linux系统中的作用。枚举是一个被命名的整型常数的集合, 枚举在日常生活中很常见。例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY, 就是一个...
  • c语言枚举法(穷举法)课件枚举法(穷举法);百元买百鸡问题分析;void main(){ int x,y,z; for (x=0;x<=100;x++) for (y=0;y<=100;y++) for (z=0;z<=100;z++) { if (x+y+z==100 &am...
  • C语言枚举类型举例

    2021-05-20 12:04:10
    C语言枚举类型举例注:以下全部代码的执行环境为VC++ 6.0宏和枚举的区别宏和枚举之间的差别主要在作用的时期和存储的形式不同,宏是在预处理的阶段进行替换工作的,它替换代码段的文本,程序运行的过程中宏已不存在...
  • C语言枚举常量与枚举变量

    千次阅读 2019-03-09 20:05:30
    最近复习C语言的时候发现自己对枚举类型印象很模糊,于是查了一下。 例:enum Boolean{NO,YES}; 其中 NO,YES是枚举常量; 我们也可以声明枚举类型的变量。 例: enum Boolean b; b = NO; 这里 b 是枚举变量...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼二、enum枚举1. 枚举的定义枚举类型定义的一般形式为:enum 枚举名{ 枚举值表 };在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。例如:该枚举名为weekday,枚举...
  • 枚举大小的计算1. 结构结构尺寸的计算实践两个规则:1. 结构中每个成员的偏移量必须是该成员自身占用的内存大小的整数倍,否则,它将用空白字节填充.2. 使用规则1计算结构的大小后,结构的大小必须是结构中最大成员...
  • 1.枚举枚举是一种用户定义的数据类型,它用关键字enum以如下语法来表明:enum 枚举类型名字{名字0,……,名字n};枚举类型的名字通常并不使用,要用的是大括号里的名字,它们是常量符号,他们的类型是int,值则依次从0...
  • C语言 枚举常量

    2021-11-23 16:06:31
    C语言 枚举常量 枚举-----依次列举出来。 #include <stdio.h> int main(){ enum Sex{ //定义一个性别,依次枚举出性别,男,女,秘密 FEMALE,MALE,SECRET }; //分别输出枚举的内容 printf("%d\t",...
  • 枚举的定义有三种 //第一种:先定义枚举类型,再定义枚举变量 enum WEEK { Mon = 1,Tue, WED, THU, FRI, SAT, SUN }; enum WEEK week; //第二种:定义枚举类型的同时定义枚举变量 enum WEEK { Mon = 1, Tue, WED,...
  • c语言枚举法(穷举法)枚举法(穷举法) “笨人之法”: 把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出。 百元买百鸡问题分析 百元买百鸡问题分析 优化 继续优化 利用穷举法求解趣味智力题 (韩信点兵) ...
  • 今天写程序时候写了个结构体,里面是一列定义的枚举类型变量。因为是做单片机软件开发,平时对变量空间占用比较敏感,所以思考起这个问题,查了博客和一些文章,发现基本都是在用sizeof()在电脑上进行测试,结果都是...
  • C语言枚举类型

    2021-07-11 10:39:56
    枚举类型 枚举类型的定义 enum 枚举类型名 {标识符1, 标识符2, 标识符3, ... 标识符n}; enum days {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday}; 枚举变量的定义

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,053
精华内容 23,621
关键字:

c语言枚举

c语言 订阅
友情链接: 数字电压表程序.rar