c语言-在面试中遇到一个枚举类型相关问题

问题描述

在面试中遇到一个枚举类型相关问题
今天在面试中遇到的问题,不知道如何解决
enum ADC__enlSRState{
ADC__nReset
ADC__nActive
ADC__nGetMux2
ADC__nGetMux3
ADC__nGetFuel
ADC__nGetTwoPinSensors
ADC__nlastState = ADC__nGetTwoPinSensors
}

在这里ADC__nlastState起到了什么作用?

解决方案

应该是用在判断一个数值e是否是有效的枚举值的时候,用e<=ADC__nlastState而不是e<=ADC__nGetTwoPinSensors;假如以后再添加一个 ADC__nGetThreePinSensors的时候,只要改ADC__nlastState的定义而不用改判断语句了。
编程小技巧。

解决方案二:
就是给ADC__nlastState指定了一个值,枚举中可以不指定值,有系统自动安排,当然你可以指定一个值,那么他后面的会挨着你设置的值继续

解决方案三:

 从字面上理解,ADC__nlastState表示最后的状态,ADC__nlastState = ADC__nGetTwoPinSensors表示两者相等,相当于它们互为对方的别名具体为什么如此,要看你的业务,这应该是一个模数转换的设备。但是枚举使用别名这很常见,有时候为了向前兼容,有时候为了方便理解比如windows api中的messagebox函数MB_ICONHAND MB_ICONSTOP or MB_ICONERROR,它们都表示那个错误的图标。这是因为在windows 3.x下,其实还有一个stop的图标(类似道路上的stop标志牌,在美国很常见,中国不多),但是在现在的windows下已经废弃了,为了代码兼容性,它被重新映射到error图标上再比如设置windows窗体风格的WS_EX_OVERLAPPEDWINDOW,它其实代表(WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE),这就是为了方便记忆。
时间: 2024-10-07 01:18:56

c语言-在面试中遇到一个枚举类型相关问题的相关文章

当向计算机中存入一个float类型的数值2.2 后,在从计算机中读出输出,这时2.2 的值已经发生了变化(转)

 problom : 'f1' value hava been changed when output. reason : the binary repersentation of 2.2f is : 00110011001100110011... (is an infinite recurring decimal) but computer only store 24 byte , so discard the remaining number , lead to the value has

C语言及程序设计进阶例程-29 枚举类型及其应用

贺老师教学链接 C语言及程序设计进阶 本课讲解 He先生方案一:用整型表示品牌.颜色 #include <stdio.h> int main( ) { int brand,color; //brand=0,1,2分别表示Lavida.Tiggo和Skoda //color=0,1,2分别表示红黑白 for(color=0; color<3; color++) for(brand=0; brand<3; brand++) if(!((color==1&&brand==

面试中被一个问题问到了,关于EJB会话bean的,大侠进来帮忙解答一下

问题描述 简单地介绍下无状态会话bean和有状态会话bean的联系与差别? 解决方案 解决方案二:我是初学者,我也不会解决方案三:区别就在有没有状态.解决方案四:因为区别于有无状态,所以差别体现在可以服务任何请求,和服务于某一特定的请求解决方案五:状态指的就是这个类的属性.对于EJB容器来说,其会对StatelessSessionBean的实例进行重用,如果在StatelessSessionBean中有属性成员的话,会在重用这个对象时继续含有这个属性成员的值.而StatefulSessionBe

Python中模拟enum枚举类型的5种方法分享_python

以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码 代码如下: # way1 class Directions:     up = 0     down = 1     left = 2     right =3     print Directions.down # way2 dirUp, dirDown, dirLeft, dirRight = range(4) print dirDown # way3 import collections dircoll=collections.

讲解C++中的枚举类型以及声明新类型的方法_C 语言

C++枚举类型如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型.所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内.声明枚举类型用enum开头.例如: enum weekday{sun, mon, tue, wed, thu, fri, sat}; 上面声明了一个枚举类型weekday,花括号中sun, mon, -, sat等称为枚举元素或枚举常量.表示这个类型的变量的值只能是以上7个值之一.它们是用户自己定义的标识符. 声明枚举类型

C语言详解 - 枚举类型

如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来.  举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它! enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示

详解Swift中enum枚举类型的用法_Swift

一.引言 在Objective-C语言中,没有实际上是整型数据,Swift中的枚举则更加灵活,开发者可以不为其分配值类型把枚举作为独立的类型来使用,也可以为其分配值,可以是字符,字符串,整型或者浮点型数据. 二.枚举语法 Swift中enum关键字来进行枚举的创建,使用case来创建每一个枚举值,示例如下: //创建姓氏枚举,和Objective-C不同,Swift枚举不会默认分配值 enum Surname { case 张 case 王 case 李 case 赵 } //创建一个枚举类型的

C/C++中枚举类型(enum)

如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来. 举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它! enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅

全面解读Java中的枚举类型enum的使用_java

关于枚举大多数地方写的枚举都是给一个枚举然后例子就开始switch,可是我想说,我代码里头来源的数据不太可能就是枚举,通常是字符串或数字,比如一个SQL我解析后首先判定SQL类型,通过截取SQL的token,截取出来可能是SELECT.DELETE.UPDATE.INSERT.ALTER等等,但是都是字符串,此时我想用枚举就不行了,我要将字符串转换成枚举怎么转呢,类似的情况还有从数据库取出数据根据一些类型做判定,从页面传入数据,根据不同的类型做不同的操作,但是都是字符串,不是枚举,悲剧的是我很少