﻿# V650\. Type casting is used 2 times in a row\. The '\+' operation is executed\. Probably meant: \(T1\)\(\(T2\)a \+ b\)\.

The analyzer has detected a potential error in an expression with address arithmetic\. Addition/subtraction operations are performed over an expression which is a double type conversion\. It may be a misprint: the programmer forgot to put the first type conversion and addition operation into brackets\.

Consider an example of incorrect code:

```cpp
ptr = (int *)(char *)p + offset_in_bytes;
```

The programmer was most likely expecting the 'p' variable to be cast to the 'char \*' type, the shift in bytes added to it after that\. Then the new pointer was expected to be cast to the 'int \*' type\.

But the missing parentheses turn this expression into a double type conversion and addition of the shift to the 'int'\-pointer\. The result will be different from the expected one\. Such an error might well cause an array overrun\.

This is the fixed code:

```cpp
ptr = (int *)((char *)p + offset_in_bytes);
```