Страницы

Поиск по вопросам

вторник, 9 июля 2019 г.

Есть ли разница между этими двумя кусками кода?

typedef enum { DISABLE = 0, ENABLE = !DISABLE } FunctionalState;
Есть ли какое-либо преимущество у такой записи или можно заменить более простым кодом?
typedef enum { DISABLE, ENABLE } FunctionalState;


Ответ

Если речь идет о получаемых в результате таких объявлений значениях enum-констант, то нет, разницы никакой нет. А уж есть ли тут какой-то "преимущество" говорить трудно, учитывая, то объявления немедленно эквивалентны.
Вариант ENABLE = !DISABLE явно выражает тот либо факт, что должно выполняться ENABLE == 1, либо тот факт, что должно выполняться ENABLE != 0. Какой из них - не ясно, но по крайней мере какая-то взаимосвязь между DISABLE и ENABLE явно передана.
Во втором варианте читателю кода никакой явной взаимосвязи не видно. То есть ничего не мешает читателю предположить, что данные константы могут иметь произвольные значения.

Комментариев нет:

Отправить комментарий