﻿# V559\. Suspicious assignment inside the condition expression of 'if/while/for' operator\.

The analyzer detected an issue that has to do with using the assignment operator '\=' in the conditional expression of an 'if' or 'while' statement\. Such a construct usually indicates the presence of a mistake\. It is very likely that the programmer intended to use the '\=\=' operator instead of '\='\.

Consider the following example:

```cpp
const int MAX_X = 100;
int x;
...
if (x = MAX_X)
{ ... }
```

There is a typo in this code: the value of the 'x' variable will be modified instead of being compared with the constant MAX\_X:

```cpp
if (x == MAX_X)
{ ... }
```

Using assignments inside conditions is not always an error, of course\. This technique is used by many programmers to make code shorter\. However, it is a bad style because it takes a long time to find out if such a construct results from a typo or the programmer's intention to make the code shorter\.

Instead of using assignments inside conditional expressions, we recommend implementing them as a separate operation or enclosing them in additional parentheses:

```cpp
while ((x = Foo()))
{
  ...
}
```

Code like this will be interpreted by both the analyzer and most compilers as correct\. Besides, it tells other programmers that there is no error here\.