Приоритет операторов в рамках выражений должен быть сделан явным
Примечание
Используйте Bug Finder вместо Code Prover для проверки правил кодирования. Поддержка кодирования правил, регистрируясь в Code Prover будет удалена в будущем релизе. См. Вопросы совместимости.
Приоритет операторов в рамках выражений должен быть сделан явным.
Язык C имеет большое количество операторов, и их приоритет не интуитивен. Неопытные программисты могут легко сделать ошибки. Удалите любую неоднозначность при помощи круглых скобок, чтобы явным образом задать приоритет оператора.
Список следующих таблиц MISRA C® определение приоритета оператора для этого правила.
| Описание | Оператор и операнд | Приоритет |
|---|---|---|
| Первичный | идентификатор, постоянный, строковый литерал, (выражение) | 16 |
| Постфикс | [] () (вызов функции) . -> ++(постинкрементный) --(постдекрементный) () {}(C99: составные литералы) | 15 |
| Унарный |
| 14 |
| Бросок | () | 13 |
| Мультипликативный | * / % | 12 |
| Дополнение | + - | 11 |
| Поразрядный сдвиг | << >> | 10 |
| Реляционный | <> <= >= | 9 |
| Равенство | == != | 8 |
| Поразрядный AND | & | 7 |
| Поразрядный XOR | ^ | 6 |
| Битовое "ИЛИ" | | | 5 |
| Логический AND | && | 4 |
| Логический OR | || | 3 |
| Условное выражение | ?: | 2 |
| “()” Присвоение | = *= /= += -= <<= >>= &= ^= |= | 1 |
| Запятая | , | 0 |
Операнд логического %s не является первичным выражением. Приоритет операторов в рамках выражений должен быть сделан явным.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
| Группа: Выражения |
| Категория: консультация |
| Категория AGC: консультация |