В некоторых случаях может иметь смысл использовать бит-карту.
Например, ваш тест:
if (count == 5 || count == 8 || count == 9 || count == 10)
эквивалентно:
if ((1<<count) & 0x720)
Значения 5, 8, 9 и 10 кодируют в бит значения 0x720
.
Как правило, это будет иметь смысл, если у вас есть значимые символические константы для значений 5, 8, 9 и 10, с 0x720
построен из побитового «или» (|
) этих констант - что привело бы к более многословным кода, чем простой if
, который у вас есть в вашем вопросе.
На практике код реального мира должен минимизировать использование «магических чисел». Трудно сказать, что означают значения 5, 8, 9 и 10.
Возможно, вам стоит рассмотреть возможность использования другого алгоритма, но это невозможно рассказать без дополнительной информации.
Thats, вероятно, лучший способ сделать это. – Gugi
@Gugi: В зависимости от того, что вы делаете, простое выражение 'if' в вашем вопросе может быть лучшим способом сделать это. Это более читаемо, чем большинство альтернатив, и для чего-то эта небольшая производительность вряд ли будет серьезной проблемой. –