C ++中的Typedef enum

时间:2017-04-05 10:29:31

标签: c++ variables enums typedef member

我有一个类似这样的typedef

typedef enum
{
ONE = 01,
TWO = 02,
THREE = 03
}number_t;

我刚刚将一个成员变量定义为 number_t m_number;

所以,如果我在任何其他函数中返回m_number,将返回一个或两个或三个?

2 个答案:

答案 0 :(得分:0)

就像任何其他局部变量一样,如果它没有被你的代码初始化,那么内容将是堆栈中的任何内容,在这种情况下是完全随机的。

如果你想确定它的值是什么,那么在使用之前将其初始化,添加到你的枚举中:

NUMBER_NOT_SET = 0

然后进入你的职能部门:

number_t m_number = NUM​​BER_NOT_SET;

答案 1 :(得分:0)

由于您没有初始化变量,因此它具有不确定值

因此,它可能是映射到ONETWOTHREE或任何其他值的整数之一。

对于enum对象而言,如果某个值没有映射到枚举器,那么这本身并不是错误的,因此这不是一个大问题。但是,您无法合法地评估不确定的值,因此在为其指定值之前,您无法安全地观察此对象。

顺便说一句,当你到达08时,你会感到震惊,如果你跳到010则更是如此。不要在整数文字上使用前导零,除非你真的打算以八进制计数。

这是你应该做的事情:

enum number_t
{
   ONE   = 1,
   TWO   = 2,
   THREE = 3
};

number_t number = ONE;