将Enum转换为布尔类型

时间:2013-06-11 13:32:20

标签: c++

在我的应用程序中,我希望将AND表示为1,将OR表示为0,而不是选择#define方法,我使用枚举来表示它们,如下面的示例程序所示

#include <stdio.h>

enum gateConnection_t
{AND,OR}
gateConnection;

int main()
{

bool and_t = AND;
bool or_t = OR;

printf("%d\n",and_t);
printf("%d\n",or_t);

return 0;
}

如上所示,我直接将枚举值赋给boolean vvariables。该程序按预期工作,我唯一的问题是内部强制转换是否安全,或者使用static_cast等显式转换是否更好?

2 个答案:

答案 0 :(得分:3)

首先,你的{AND,OR}是错误的。

标准的枚举从0开始(尽管你可以覆盖它)。

使用

enum gateConnection_t
{OR,AND}

代替。

顺便说一句,演员是安全的。

从概念上讲,这是一件令人讨厌的事情。你为什么要这个;特别是在C ++中?真假有什么问题?

答案 1 :(得分:1)

enum gateConnection_t
{AND=1,OR=0}
gateConnection;

enum gateConnection_t
{
OR=0,
AND  //<== this equal to the previous plus one automatically 
}gateConnection;