将Enum转换为布尔类型
Conversion Enum to Boolean type
在我的应用程序中,我想将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;
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 创建类似于布尔值的变量类型
- C++:将值赋值给原始数据类型(例如布尔值)是原子操作吗?
- 如何创建两个具有相同名称和不同返回类型并基于布尔参数运行的函数
- 无法将'Class::operator=='从"布尔"类型(类::)(类*)转换为"布尔"类型
- 给定仅包含布尔类型成员的结构的两个对象 s1 和 s2,只要 s1 的成员为 true,请检查 s2 的每个成员是否为真
- 为什么当我将真或假分配给布尔类型的向量时,下面的程序给我错误?
- 为什么Visual C++ 2008在我(不小心)使用布尔类型时没有抱怨
- 为什么 int vs 布尔类型检查失败
- 布尔类型的参数不匹配
- 是条件表达式C++总是布尔类型
- GCC 编译器上布尔类型的 C 和C++语言的默认初始值设定项是 64 而不是 0。这是编译器错误?
- 在标准C++中是否存在固定宽度的布尔类型
- 将Enum转换为布尔类型
- 布尔类型的递归
- c++中布尔类型返回函数的默认返回值
- 布尔类型操作
- 如何根据布尔类型成员函数的返回值调用结构成员函数
- C++字符串(常量字符[1])到布尔类型的转换 - 原因/解释和后果
- c++中布尔类型的奇怪行为