Вы бы использовали num% 2 или num & 1, чтобы проверить, является ли число четным?

Ну, есть по крайней мере два низкоуровневых способа определения, является ли данное число четным или нет:

 1. if (num%2 == 0) { /* even */ } 
 2. if ((num&1) == 0) { /* even */ }

Я считаю, что второй вариант гораздо более элегантный и значимый, и этоэто тот, который я обычно использую. Но это не только вопрос вкуса; Фактическая производительность может варьироваться: обычно побитовые операции (такие как логические и здесь) гораздо более эффективны, чем операции с модами (или div). Конечно, вы можете утверждать, что некоторые компиляторы все равно смогут оптимизировать его, и я согласен ... но некоторые выиграли »т.

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

Как вы думаете?

Указанные два фрагмента верны, только еслиnum это либо беззнаковое целое, либо отрицательное число с двумяДополнить представление. - Как справедливо констатируют некоторые комментарии.

Ответы на вопрос(12)

Ваш ответ на вопрос