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

V6057. Consider inspecting this expression. The expression is excessive or contains a misprint.

04 Окт 2018

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

Поясним на простом примере:

if (arr[42] == 10 && arr[42] != 3)

Условие будет выполнено в том случае, если 'Aa[42] == 10'. Вторая часть выражения бессмысленна. Проанализировав код, можно прийти к одному из двух выводов:

1) Выражение можно упросить. Исправленный код:

if (arr[42] == 10)

2) Выражение содержит ошибку. Исправленный код:

if (arr[42] == 10 && arr[43] != 3)

Рассмотрим еще пример с условием, которое вызывает подозрение:

if ((3 < value) && (value > 10))

Условие выполнится только тогда, когда 'value > 10'. Скорее всего это будет означать ошибку, и подразумевалось, что 'value' примет значение в интервале (3;10):

if ((3 < value) && (value < 10))

Статья, в которой рассмотрены подобные ситуации и даны советы, как избежать таких ошибок: "Логические выражения в C/C++. Как ошибаются профессионалы".

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