﻿# V6117\. Possible overflow\. The expression will be evaluated before casting\. Consider casting one of the operands instead\.

Анализатор обнаружил подозрительное приведение типов\. Результат бинарной операции приводится к типу с большим диапазоном\.

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

```cpp
long multiply(int a, int b) {
    return (long)(a * b);
}
```

Такое преобразование избыточно\. Тип 'int' и так бы автоматически расширился до типа 'long'\.

Скорее всего, подобный паттерн приведения используется для защиты от переполнения, но он неправильный\. При перемножении переменных типа 'int' всё равно произойдёт переполнение, и только уже бессмысленный результат умножения будет явно расширен до типа 'long'\.

Для корректной защиты от переполнения можно привести один из аргументов к типу 'long'\. Исправленный код:

```cpp
long multiply(int a, int b) {
    return (long)a * b;
}
```