Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V3227. The precedence of the...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V3227. The precedence of the arithmetic operator is higher than that of the shift operator. Consider using parentheses in the expression.

02 Сен 2025

Анализатор обнаружил потенциальную ошибку: выражение может выдавать не тот результат, на который рассчитывал программист. Причина в том, что операции сложения, вычитания, деления и умножения имеют более высокий приоритет, чем операции сдвига.

Рассмотрим пример:

private BigInteger OddPow (uint b, BigInteger exp)
{
  uint [] wkspace = new uint [mod.length << 1 + 1];
  ....
}

Скорее всего, разработчик ожидал, что результат сдвига mod.length на 1 будет сложен с 1. Но согласно приоритету операций, вначале произойдёт сложение, а уже потом — сдвиг. Для исправления нужно добавить скобки.

Корректный вариант кода:

private BigInteger OddPow (uint b, BigInteger exp)
{
  uint [] wkspace = new uint [(mod.length << 1) + 1];
  ....
}

Данная диагностика классифицируется как: