Expressions and statements
ES.41
При сомнениях в приоритете операторов используйте скобки
Причина
Избегайте ошибок. Читаемость. Не все помнят таблицу операторов наизусть.
Пример
const unsigned int flag = 2;
unsigned int a = flag;
if (a & flag != 0) // плохо: означает a&(flag != 0)
Примечание: Мы рекомендуем программистам знать таблицу приоритетов для арифметических и логических операций, но считать, что смешение побитовых логических операций с другими операторами требует скобок.
if ((a & flag) != 0) // OK: работает как задумано
Примечание
Вы должны знать достаточно, чтобы не нуждаться в скобках для:
if (a < 0 || a <= max) {
// ...
}
Контроль
- Отмечайте комбинации побитово-логических операторов с другими операторами.
- Отмечайте операторы присваивания, не являющиеся самым левым оператором.
- ???