广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中位段与枚举是什么意思
  • 522
分享到

C语言中位段与枚举是什么意思

2023-06-29 03:06:05 522人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关C语言中位段与枚举是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.什么是位段? 位段的声明和结构是类似的,有两个不同: ①位段的成员必须是 in

这篇文章将为大家详细讲解有关C语言中位段与枚举是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1.什么是位段? 

位段的声明和结构是类似的,有两个不同: 

①位段的成员必须是 int、unsigned int 或signed int 

②位段的成员名后边有一个冒号和一个数字 

例如:

struct A{        //4byte=32bit    int 4个字节        //开辟4个字节        int _a : 2 ;//30(分配了2字节,还剩30字节)        int _b : 5 ;//25        int _c : 10 ;//15        //在开辟4个字节        int _d : 30 ;//超出剩余的开辟内存大小,根据C标准可能用前面的15字节在开辟15字节                             //也可能不用重新开辟30字节};

C语言中位段与枚举是什么意思

 简言之:位段就是规定变量占的比特位!

2.位段的内存分配、跨平台与使用 

特别提醒: 

位段的成员可以是 int unsigned int signed int 或者是 char (属于整形家族)类型 

位段的空间上是按照需要以4个字节( int )或者1个字节( char )的方式(char准确来说是int类型,反汇编内部处理为int)来开辟的

位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段(问题在于多余内存使用和开辟上) 例如:

struct S {char a:3;char b:4;char c:5;char d:4;};struct S s = {0};s.a = 10; s.b = 12; s.c = 3;s.d = 4;

C语言中位段与枚举是什么意思

 位段的跨平台问题:

int 位段被当成有符号数还是无符号数是不确定的。 

位段中最大位的数目不能确定。(16位机器最大16,32位机器最大32,写成27,在16位机 器会出问题。 

位段中的成员在内存中从左向右分配,还是从右向左分配标准尚未定义。 

当一个结构包含两个位段,第二个位段成员比较大,无法容纳于第一个位段剩余的位时,是 舍弃剩余的位还是利用,这是不确确定的。 

总结: 跟结构相比,位段可以达到同样的效果,但是可以很好的节省空间,但是有跨平台的问题存在 

位段的应用: 

C语言中位段与枚举是什么意思

3.什么是枚举? 

枚举顾名思义就是一一列举。 

把可能的取值一一列举。 

例如:

//(可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值)enum Day//星期{Mon,Tues,Wed,Thur,Fri,Sat,Sun};enum Sex//性别{MALE,FEMALE,SECRET};enum Color//颜色{RED,GREEN,BLUE};//以上定义的 enum Day , enum Sex , enum Color 都是枚举类型//{}中的内容是枚举类型的可能取值,也叫枚举常量//枚举的初始化enum Color//颜色{RED=1,GREEN=2,BLUE=4};

4.枚举的优点与使用 

我们可以使用 #define 定义常量,为什么非要使用枚举? 

枚举的优点: 

增加代码的可读性和可维护性

和 #define 定义的标识符比较枚举有类型检查,更加严谨。

防止了命名污染(封装)

便于调试

使用方便,一次可以定义多个常量 

枚举的使用:

enum Color // 颜色{RED = 1 ,GREEN = 2 ,BLUE = 4};enum Color clr = GREEN ; // 只能拿枚举常量给枚举变量赋值,才不会出现类型的差异。clr = 5;               //这样是错误的!

关于“C语言中位段与枚举是什么意思”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: C语言中位段与枚举是什么意思

本文链接: https://www.lsjlt.com/news/322114.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言中位段与枚举是什么意思
    这篇文章将为大家详细讲解有关C语言中位段与枚举是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.什么是位段? 位段的声明和结构是类似的,有两个不同: ①位段的成员必须是 in...
    99+
    2023-06-29
  • C语言的位段与枚举详解
    目录1.什么是位段? 2.位段的内存分配、跨平台与使用 3.什么是枚举? 4.枚举的优点与使用 总结1.什么是位段?  位段的声明和...
    99+
    2022-11-13
  • c语言中如何自定义结构体、位段和枚举
    这篇文章主要介绍了c语言中如何自定义结构体、位段和枚举的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇c语言中如何自定义结构体、位段和枚举文章都会有所收获,下面我们一起来看看吧。结构体类型创建:struct St...
    99+
    2023-06-17
  • c语言中node是什么意思
    在C语言中,node是用于定义链表结点的名称,通常在数据结构中用作结点的类型名,语法为“struct Node{...};”;结构和类在定义出名称以后,直接用该名称就可以定义对象,C语言中还存在“Node * a”和“Node* &...
    99+
    2022-07-06
    C语言
  • c语言中case是什么意思
    本教程操作环境:windows7系统、c99、Dell G3电脑。case中文是什么意思作名词意思是例子;情况;案例;(辩论或诉讼)论据;箱。作动词意思是装箱;踩点;仔细检查。c语言中的case在c语言中,case的意思为“情况”、“案例”...
    99+
    2022-11-23
    C语言
  • c语言中extern是什么意思
    本篇内容主要讲解“c语言中extern是什么意思”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c语言中extern是什么意思”吧!如果一个变量使用关键词extern,变量进行外部变量声明,则表示...
    99+
    2023-06-25
  • c语言中sizeof是什么意思
    本篇内容介绍了“c语言中sizeof是什么意思”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!sizeof()内部表达式不参与真实运算,编译时...
    99+
    2023-06-25
  • c语言中undeclared identifier是什么意思
    在C语言中,"undeclared identifier"是指在使用一个变量、函数或其他标识符时,编译器无法找到该标识符的声明。这通...
    99+
    2023-08-25
    c语言
  • c语言中的0x是什么意思
    c语言中的0x是什么意思,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。   c语言0x是什么意思   C语言中对变量赋值0x是以十六进...
    99+
    2022-10-19
  • C语言数组是什么意思
    这篇文章给大家分享的是有关C语言数组是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是数组数组(Array)是一种用来存储同一种类型的集合,是一种有序的线性结构表。并且数组元素的地址是连续的。数组最大...
    99+
    2023-06-22
  • c语言中ftell函数是什么意思
    本篇内容介绍了“c语言中ftell函数是什么意思”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C语言函数ftell用于获取文件位置指针当前位...
    99+
    2023-06-25
  • c语言中realloc函数是什么意思
    这篇文章主要讲解了“c语言中realloc函数是什么意思”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c语言中realloc函数是什么意思”吧!判断当前指针是否有足够的连续空间。如果足够,扩...
    99+
    2023-06-25
  • c语言中预处理器是什么意思
    这篇文章主要介绍“c语言中预处理器是什么意思”,在日常操作中,相信很多人在c语言中预处理器是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”c语言中预处理器是什么意思”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-25
  • C语言中#和##表示什么意思
    这篇文章主要讲解了“C语言中#和##表示什么意思”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言中#和##表示什么意思”吧!1.#先做一个小铺垫。C语言中允许把一个字符串拆成2个字符串。...
    99+
    2023-07-05
  • python语言中type是什么意思
    在Python语言中,`type`是一个内置函数,用来获取一个对象的类型信息。它通常以`type(object)`的形式调用,其中`...
    99+
    2023-09-22
    python
  • php语言中hr是什么意思
    本教程操作环境:windows7系统、PHP7.1&&HTML5版、DELL G3电脑hr的意思为“水平线”,是一个定义水平线分隔的html标签。hr标签的表现形式为一条横线,可以在视觉上将文档分隔成两个部分。php语言中输...
    99+
    2019-01-27
    php hr
  • go语言中str是什么意思
    在go语言中,str指的是“字符串”,是一个不可改变的字节序列。字符串可以包含任意的数据,但是通常是用来包含可读的文本,字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码表上的字符时则占用 1 个字节,其它字符根据需要占用 2-...
    99+
    2023-05-14
    go语言 Golang 字符串
  • c语言找不到标识符是什么意思
    在C语言中,当编译器提示"找不到标识符"的错误时,意味着编译器无法识别或找不到对应的标识符(变量、函数、类型等)...
    99+
    2023-08-08
    c语言
  • C语言中return用法 return 1什么意思
    在C语言中,return关键字用于函数的结束和返回值的传递。当函数执行到return语句时,函数将会立即结束,并返回return后面...
    99+
    2023-08-18
    C语言
  • go语言中函数是什么意思
    在go语言中,函数是组织好的、可重复使用的、用来实现单一具体或相关联功能的代码段(块);其主要目的是提高应用的模块性和代码的重复利用率,更好的管理代码,模块化开发。函数通常使用参数和返回值,与调用者交互数据;参数给函数传递数据,返回值,函数...
    99+
    2023-05-14
    函数 Golang Go go语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作