﻿# V5011\. OWASP\. Possible overflow\. Consider casting operands, not the result\.

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

Пример кода с ошибкой:

```cpp
unsigned a;
unsigned  b;
....
uint64_t c = (uint64_t)(a * b);
```

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

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

Следовало привести один из аргументов к этому типу, чтобы избежать переполнения\. Корректный код:

```cpp
uint64_t c = (uint64_t)a * b;
```