首页
学习
活动
专区
圈层
工具
发布

C语言(枚举类型)

C语言中的枚举类型常年跑龙套当配角,不受待见,这当然是有其个人原因的。今天来个小知识,看看枚举为什么那么衰,也顺便看看怎么用。 我们先来回忆一下为什么需要枚举,枚举究竟是个什么东东?...这么看来,枚举是一种挺好玩也挺有用的东西,但是在C语言中怎么就不受待见了呢?...原因是C语言只提供了一种阉割版的枚举,以上两大目的在C中实质上都是没有实现的,也就是说,在C语言中,实际情况是这样的: color = blue; // 正确,此时color就是5 color = 5;...此时color就是blue color = 8; // 正确,8是整型,跟枚举完全没有任何区别 color = red + orange; // 正确,完全等价于 color = 1+2 你看明白了吧,C语言中的所谓枚举其实就是个坑爹货...枚举的真正实现,在C++中才有实现。

2.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言——枚举类型

    一,什么是枚举类型 简单来说,枚举类型就是可以让我们给整数值分配有意义的名字,从而使得代码更易读、易维护 二,枚举类型的定义和变量的声明 1,如何定义和声明 枚举类型的定义和变量的声明方式也与结构体和联合体相似...如果我们在创建枚举变量时,为未给成员进行初始化赋值,则C语言会自动赋值 遵循:默认从0开始,依次增1 如果只有前几个值,那么后面未被赋值的成员也会被自动赋值,遵循依次增1 例子一(不赋值)...存在同名的枚举成员 enum color1 { red, yellow, blue }; enum color2 { red, black, white }; 三,对变量进行赋值 1,使用成员赋值 ⭐C语言中的枚举变量通常只能被赋值为枚举类型中定义的成员...blue = 3 }; int main() { enum color a, b, c; a = red; b = yellow; c = blue; return 0; } 2,强制类型转化...blue = 3 }; int main() { enum color c; c = (enum color)10; //强制类型转换 printf("%d\n", c); return 0

    2.6K11

    【C语言】枚举类型(enum)

    前言 在本文,我们将学习一个自定义的类型——枚举。相信很多读者听到这个并不会感觉到陌生,那么本文就来着重跟大家聊一聊何为枚举类型,能用枚举类型干什么事。 话不多说,让我们开始本次精彩的学习吧!...枚举类型的声明 在讲完枚举的含义之后,我们就来认识一下,在C语言中是如何声明一个枚举类型的。...以上定义的enum Day,enum Sex,enum Color都是枚举类型。 {}里面的值就是枚举类型可能取值,也叫做枚举常量。 这些可能的取值都是有值的,默认是从0开始,依次递增1。...当然在声明枚举类型的时候可以给枚举常量赋初值。...在C语言中时允许的,但在C++中时不行的,C++对于类型的检查是比较严格的。

    3.6K11

    C语言之字符类型

    文章目录 字符类型(char) 1. 基本介绍 2. 基本案例 3. 字符类型使用细节 4. 字符类型本质探讨 5. ASCII 码介绍 6. ASCII码对照表 字符类型(char) 1....基本介绍 字符类型可以表示单个字符,字符类型是 char,char 是 1 个字节(可以存字母或者数字),多个字符称为字符串,在C 语言中 使用 char 数组 表示 字符串,数组不是基本数据类型,而是构造类型...字符类型使用细节 字符常量是用单引号(' ')括起来的单个字符。例如:char c1 = 'a'; char c3 = '9'; C 中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。...可以直接给 char 赋一个整数,然后输出时,会按照对应的 ASCII 字符输出 [97] char 类型是可以进行运算的,相当于一个整数,因为它都对应有 Unicode 码. 案例演示: ?...字符类型本质探讨 字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来 存储:字符’a’——>码值 (97)——>二进制 (1100001)——>存储() 读取:二进制(1100001)——

    6.4K21

    C语言构造类型

    思维导图一、结构体:打包数据1.1语法结构:定义与初始化定义模板:展开代码语言:CAI代码解释struct结构体标签{成员1类型成员1名;成员2类型成员2名;...};//语言:CAI代码解释enumColor{RED=5,GREEN,BLUE};题目6:为什么在定义链表节点时,不能在内部包含同类型的结构体变量,但可以包含同类型的指针?...;,如果i被赋值为0x1234,c的值是多少(假设小端序)?...详解:C语言没有为结构体定义==运算符。原因在于结构体可能包含填充字节(Padding),其中的垃圾值不可控,直接比较内存是不可靠的。必须手动编写函数逐个成员比较。题5解析答案:7。...虽然类型定义写了两遍,但在C中它们被视为兼容的布局(在同个作用域通常能跑通,但严格标准下是不同类型)。

    24021

    C语言类型转换(自动类型转换+强制类型转换)

    数据类型转换就是将数据(变量、数值、表达式的结果等)从一种类型转换为另一种类型。自动类型转换自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生。...1) 将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换,例如:float f = 100;100 是 int 类型的数据,需要先转换为 float 类型才能赋值给变量 f。...在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型转换为左边变量的类型,这可能会导致数据失真,或者精度降低;所以说,自动类型转换并不一定是安全的。...对于不安全的类型转换,编译器一般会给出警告。2) 在不同类型的混合运算中,编译器也会自动地转换数据类型,将参与运算的所有数据先转换为同一种类型,然后再进行计算。...自动类型转换是编译器默默地、隐式地进行的一种类型转换,不需要在代码中体现出来;强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换。

    51510

    C语言基础:(二)C语言数据类型和变量

    一、数据类型介绍         C语言为我们提供了丰富的数据类型来描述我们生活中的各种数据。...1.1  字符型         字符,即为character,在C语言中用 char 表示字符类型。...        在早期的C语言中本不存在布尔类型的变量,而是用整数 0 表示假,非零值表示真。...1.5.1  sizeof操作符 sizeof( 类型 ) sizeof 表达式 sizeof 是C语言中的一个关键字,也是一种操作符,专门用于计算类型长度,单位是字节。...sizeof的计算结果是 size_t 类型的数据。 注:sizeof 运算符的返回值,C 语言只规定是无符号整数,并没有规定具体的类型,而是留给系统自己去决定, sizeof 到底返回什么类型。

    43410

    【无标题】C语言变量类型

    前言 最初的计算机发明的用武之地是处理困难的数据,到了科技越来越发达的现代,计算机被赋予了多种用途,它的计算能力、计算类型与以前的计算机自然是有过之而无不及,当然这不止体现在数据快慢、大小方面,更体现在数据类型多种多样方面...下面请跟着John来探索C语言变量种类吧。 一、变量名称 在用到计算机时,千千万万而又大同小异的数据都需要分类处理。它们被分为int(整型。...long也是省略过来的变量,毕竟C语言以精简为名,它的全名是singed long int,转换说明是%ld。short全名是signed short int转换说明是%h。...char就不同了,它的转化说明有两种——%s和%c。%s与%c的不同在于%s用于字符串(使用字符串时,一定要带英式双引号)的打印,%c用于字符(用英式单引号)的打印。...要使用unsigned int类型变量则需要%u的转换说明打印,unsigned long类型则需要%lu打印。遗憾的是float、double和unsigned不兼容。最后祝大家2024新年快乐。

    19810

    原来c语言也有布尔类型!

    由于所学够用,因此工作后很多年没有专门去买本其他作者写的C语言相关的书。直至最近突发其想,买了《C Primmer Plus》回来,快速地阅读了一遍,学到了不少新的东西。...本文主要介绍C99标准中新增加的_Bool类型。没有布尔类型的那些年在C89和C90标准中,不存在布尔类型。但是,实际工作中往往需要进行逻辑判断。...C语言本身支持逻辑处理,即将结果为0视作fase,将非0值视作true。但是,如果我们希望在程序中定义变量来存放逻辑值。...不过,从C99标准开始,C语言终于针对这种类型的变量新增了_Bool类型。如此一来,我们就可以在项目中直接使用这种类型,而无需花时间采用上述方法。...C99中的_Bool类型和int等类型一样,_Bool类型是C编译器本身支持的类型。我们无需对工程做任何处理就可以使用。

    49510
    领券