在我的应用程序中,我希望将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
等显式转换是否更好?
答案 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;