﻿# V734\. Excessive expression\. Examine the substrings "abc" and "abcd"\.

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

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

```cpp
if (strstr(a, "abc") != NULL || strstr(a, "abcd") != NULL)
```

В случае если подстрока "abc" будет найдена, то дальнейшая проверка не будет выполняться\. Если подстрока "abc" не будет найдена, то и поиск более длинной подстроки "abcd" не имеет смысла\.

Для исправления ошибки необходимо проверить правильность подстрок или убрать из кода лишние проверки\.  Пример корректного варианта:

```cpp
if (strstr(a, "abc") != NULL)
```

Другой пример:

```cpp
if (strstr(a, "abc") != NULL)
  Foo1();
else if (strstr(a, "abcd") != NULL)
  Foo2();
```

В данном случае функция Foo2\(\) никогда не будет вызвана\. Устранить ошибку можно путем замены порядка проверки\. То есть сначала следует искать более длинную подстроку, а потом более короткую:

```cpp
if (strstr(a, "abcd") != NULL)
  Foo2();
else if (strstr(a, "abc") != NULL)
  Foo1();
```