将Enum转换为布尔类型

Conversion Enum to Boolean type

本文关键字:布尔 类型 转换 Enum      更新时间:2023-10-16

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

所示
#include <stdio.h>
enum gateConnection_t
{AND,OR}
gateConnection;
int main()
{
bool and_t = AND;
bool or_t = OR;
printf("%dn",and_t);
printf("%dn",or_t);
return 0;
}

如上所示,我直接将枚举值赋值给布尔型虚变量。程序按预期工作,我唯一的问题是内部强制转换是否安全,还是使用显式强制转换(如static_cast)更好?

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

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

使用

enum gateConnection_t
{OR,AND}

顺便说一下,cast是安全的。

从概念上讲,这是一件令人讨厌的事情。你为什么想要这个?特别是在c++中?真和假有什么不对?
enum gateConnection_t
{AND=1,OR=0}
gateConnection;

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