﻿# V713\. Pointer was used in the logical expression before its check for nullptr in the same logical expression\.

Анализатор обнаружил в коде ситуацию, при котором проверка на nullptr некоторого указателя производится после его использования\. В отличие от диагностики V595, данная диагностика работает в пределах одного логического выражения\.

Ниже представлен некорректный пример\.

```cpp
if (P->x != 0 && P != nullptr) ....
```

В этом случае вторая проверка бессмысленна\. В случае, если 'P' равен nullptr, то произойдёт ошибка доступа к памяти при попытке разыменовывания нулевого указателя\. В таком коде что\-то явно не так\.  Наиболее простой рекомендацией будет поменять местами проверки в логическом выражении:

```cpp
if (P != nullptr && P->x != 0) ....
```

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