2013-06-11 2 views
0

В моем приложении я хочу представить и в 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("%d\n",and_t); 
printf("%d\n",or_t); 

return 0; 
} 

Как видно выше, я непосредственно присваиваю значения enum логическим переменным. Программа работает так, как ожидалось, и мой единственный вопрос заключается в том, является ли внутренняя броска безопасной, или лучше использовать явное литье, например static_cast?

+1

Решите ли вы используете C или C++. – mwerschy

+0

В чем смысл этого? – idoby

+0

@mwerschy C++, извините за пометку C – CodeCrusader

ответ

3

Во-первых, ваш {И, ИЛИ} - неправильный путь.

Перечисляет стандартное начало в 0 (хотя вы можете переопределить это).

Использование

enum gateConnection_t 
{OR,AND} 

вместо этого.

Отливка безопасна, кстати.

Концептуально, хотя это неприятная вещь. Почему вы хотите этого; особенно в C++? Что не так с истиной и ложью?

+0

Да, он был предназначен как перечисление с AND = 0 .... Я должен сделать это, чтобы представить взаимосвязь между двумя сигналами, решение использовать 1 и 0 не соответствует действительности, без особая причина – CodeCrusader

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

или

enum gateConnection_t 
{ 
OR=0, 
AND //<== this equal to the previous plus one automatically 
}gateConnection; 
Смежные вопросы